Android的Drawable
来源:互联网 发布:女变男网络电影 编辑:程序博客网 时间:2024/05/20 04:11
Android的Drawable
- 简介
用来表示图像,在实际开发中用于作View的背景,一般宽高没有大小概念,会被拉伸或缩放至View的同等大小,比自定义的View成本低,一般用XML定义。
分类
BitmapDrawable ( 标签: )
表示一张图片(图片可以是.9图)。可以直接引用,也可以xml描述它,设置其它效果,如gravity,filter等。ShapeDrawable ( 标签: )
用颜色构造图形,可以纯色也可以渐变。在xml定义,如shape,corners,padding等设置效果。
注意:size有两个属性android:width和android:height设置 了,可以通过Drawable的getIntrinsicWidth和getIntrinsicHeight可以获取到,没设置返回-1,但是作为View的背景时,shape还是会被拉伸或者缩小为View的大小。LayerDarwable ( 标签: )
表示层次化的Drawable集合,可以包含多个item,每个item表示一个Drawable,item可以引用已有的Drawable资源,也可以自定义,如ShapeDrawable,下面的item会覆盖上面的item。实现特殊的叠加效果。StateListDrawable ( 标签: )
表示Drawable集合,每个Drawable对应着View的一种状态,主要用于设置可单击的View的背景,如获取焦点,按压等状态,系统会根据View当前的状态从selector中选择对应的item,每个item对应一个Drawable,系统从上到下的顺序查找,直至查找到第一条匹配的item,一般,默认的item放在最后面。LevelListDrawable ( 标签: )
表示Drawable集合,每个Drawable都有等级的概念,每个item对应一个Drawable,并且有等级范围,可以设置最大值和最小值,可以通过Drawable的setLevel方法去设置不同的等级从而切换具体的Drawable。TransitionDrawable (标签:)
只能有两个item,用于实现两个Drawable之间的淡入淡出效果,通过它的startTransition和reverseTransition方法来实现淡入淡出的效果以及它的逆过程。InsetDrawable (标签: )
将其他Drawable内嵌到自己当中,并可以在四周留出一定的间距。当一个View希望自己的背景比自己的实际区域小的时候,可以采用InsetDrawable来实现。layerDrawable也是可以达到相同的预期效果的。ScaleDrawable(标签:)
根据自己的等级(level)将指定的Drawable缩放到一定比例,android:scaleWidth和android:scaleHeight分别表示对指定Drawable宽和高的缩放比例,以百分比的形式表示,比如25%,等级为1的话,就是缩放了25%,缩放后为原图的75%。要将其显示出来的话,必须给ScaleDrawable设置一个大于0小于10000的等级(级别越大Drawable显示得越大,等级为10000时就没有缩放效果了,公式w -= (int) (w * (10000 -level) * mScaleState.mScaleWidth / 10000))。ClipDrawable(标签:)
可以根据自己当前的等级(level)来裁剪另一个Drawable,裁剪方向可以通过android:clipOrientation和android:gravity这两个属性来共同控制,Drawable的等级(level)是有范围的,即0~10000,比如将等级设置为8000,表示按裁剪方向裁剪了20%的区域,即裁剪后为原图的80%。自定义Drawable
继承自Drawable,重写draw方法。setAlpha、setColorFilter、getOpacity、draw这几个方法是必须实现的,自定义Drawable实现圆形、圆角图片,可以作为任何View的背景。getIntrinsicWidth、getIntrinsicHeight当自定义的Drawable有固定大小时重写,主要是为了在View使用wrap_content的时候,提供一下尺寸,默认为-1,setBounds方法是去设置下绘制的范围。
- 参考
Android开发艺术探索;
领略千变万化的Android Drawable (一)
领略千变万化的Android Drawable (二)
Android Drawable 那些不为人知的高效用法
- android的Drawable
- android的Drawable资源
- android 的Drawable
- Android 的Drawable
- Android的Drawable
- Android的Drawable
- Android的Drawable体系
- Android的各种Drawable
- android的Drawable详解
- android的Drawable详解
- Android的Drawable
- Android各种各样的drawable
- Android的Drawable
- Android的Drawable
- Android的Drawable
- android res目录下drawable、drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi的使用方法
- android中drawable的分类
- Android Drawable资源的使用
- java学习_面向对象
- Java字符串应用
- win10删除vmware12后,重新安装失败(遗留注册表问题)解决总结
- Mac使用mysql中出现ERROR 1045: Access denied for user: 'root@localhost' 以及密码过期解决方法
- VIM完全使用教程
- Android的Drawable
- js实现表格的添加 删除 搜索和排序
- 区间dp—整数划分
- TreeSet的两种排序方式
- CSDN 学院 大数据和人工智能 第一课
- Java面向对象思想
- 原理总结-mybatis
- 牛客网-游戏任务标记
- 异常 知识点记忆