Android中Drawable分类汇总-下

七、ScaleDrawable

ScaleDrawable是对一个Drawable进行缩放操作,可以根据level属性控制这个drawable的缩放比率,也可以设置它在容器中的对齐方式。

在xml文件中使用scale作为根节点来创建RotateDrawable。

创建ScaleDrawable的代码如下:

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<!-- android:scaleGravity=""可以设置缩放的对齐方式 -->
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/smiley_smile"
android:scaleWidth="100%"
android:scaleHeight="100%"
>

</scale>

Android中Drawable分类汇总-上

Android把可绘制的对象抽象为Drawable,不同的图形图像资源就代表着不同的drawable类型。Android FrameWork提供了一些具体的Drawable实现,通常在代码中都不会直接接触Drawable的实现类。

在实际的开发过程中,会把使用到的资源都放置在res/drawable目录,剩下的工作交给Android SDK 就行了,当需要使用图片资源的时候,可以使用@drawable标志在xml中引用drawable资源就行,也可以在代码中使用id引用这些drawable资源。

在使用drawable资源的时,有一点需要注意,drawable默认是内存共享的,也就说在不同的地方使用了同一个drawable,它们都指向相同的资源,而且具有相同的状态,如果在一个地方修改了这个drawable,所有使用它的地方都会改变。

Android内置了如下几种Drawable类型:ColorDrawable、GradientDrawable、BitmapDrawable、 NinePatchDrawable、InsetDrawable、ClipDrawable、ScaleDrawable、RotateDrawable、AnimationDrawable、LayerDrawable、LevelListDrawable、StateListDrawable、TransitionDrawable。

活在当下

人生如梦,白云苍狗。

事物总是会随着时间的流逝而变化,过去的都已过去,未来的也未能来临,最重要的自然是珍惜现在,活在当下。

活在当下,就是要崭截地告别过去。每个人都知道时光连一分一秒都倒退不了,可仍然有很多人为了过去的光荣与失败,或是骄傲或是叹息。人们的目光常常流连于过去,以致漠视现实,荒废现在,轻则岁月蹉跎,重则功败垂成。项羽自矜功伐,自以为已取得别人永远无法超越的成功,沉溺在过去辉煌的战绩之中,最后却被刘邦逼得自刎乌江。拿破仑这位枭雄,也是因为沉溺于自己以前取得的荣耀,不知顺时而变,最后被反法联盟俘获的。所以,总是活在过去的阳光下,不仅没有突破,反而会贻害无穷。人们要关注现在,不仅是要告别过去的辉煌,也要告别过去的低谷。因为如果一味流连于过去的阴影而颓废失落,是认不清现在的情势,看不到未来的前途的。这样的人,不仅会错过现在满天的星光,也会错过明天灿烂的阳光。所以,活在当下,就是要与过去告别,把现在的每一刻都当成新的起点,这样,人生的大道才会不断延伸。

EditText自动聚焦-FocusableInTouchMode

在网上看到一篇文章对touch mode的介绍是这样的:

大多数Android设备都是触摸屏的,但是实际上Android设备也支持键盘操作,允许通过键盘来完成导航,点击,输入等。
当用户通过键盘(或者轨迹球)操作的时候,有必要聚焦当前接受输入的UI元素,例如,高亮(聚焦)某个按钮,让用户知道当前正在操作的UI元素是哪个。
但是,当用户使用触摸屏与设备交互的时候,始终聚焦当前UI元素就没有必要了,而且很丑陋;用户点击哪个元素,哪个元素就是当前元素,无需高亮标识。并且,通过触摸屏与设备交互的时候,点击某个UI元素也不会导致该元素聚焦,此时的高亮效果是由Pressed状态来完成的。也就是说,在Touch Mode模式之下,UI元素是不会进入聚焦状态的,即使调用requestFocus也不会。
那么,Android是如何区分这两种情况的呢?

Android-图片存入系统相册更新显示

在开发android的过程中,我们避免不了可能会涉及到做一个自定义相册或则会去本地创建一个文件夹来存储我们需要的图片。拿相册来说,比如我们创建一个test的文件夹,拍完一张照片后存储到这个指定的test文件夹里,然后在相册里面显示出来,就像微信的效果一样。拍完即可立即显示。但是,在实际开发过程中我们保存完一张图片后并不能立即更新显示出来这个图片,需要我们重启手机才能在系统相册中显示出来。
这里先提供一个插入系统图库的方法:

1
MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "", "");

通过该方法即可把图片插入到系统图库中。但是,插入后并不会立即显示出来,需要发送一个广播:

1
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

来通知系统进行整个sd卡的扫描,如果sd里面的东西越多就会扫描的越久,并且扫描中我们不能访问sd卡,所以这样的实现方式对用户来说并不友好。