11.1 Drawable
Android中提供了13种的 Drawable
分类Drawable资源分为两种:
1.普通图片资源,一般放在res/mipmap下
2.编写的xml形式的drawable资源,放在res/drawable下
命名:[a-z0-9_.](即:只能是字母数字及和.),小写,不能以数字开头
1.ColorDrawable
当我们将ColorDrawable绘制到Canvas(画布)上的时候, 会使用一种固定的颜色来填充Paint,然后在画布上绘制出一片单色区域。
colorDrawable2.NiewPatchDrawable
点九图,Android FrameWork在显示点九图时使用了高效的图形优化算法,实现图片拉伸的自适应。
AS使用注意:
1.必须放在drawable目录下;
2.AS中.9图必须有黑线,否在编译不通过;
了解3.ShapeDrawable
定义基本的几何图形
shape属性4.GradientDrawable
一个具有渐变区域的Drawable,可以实现线性渐变,发散渐变和平铺渐变效果
渐变注:了解java代码中使用
ShapeDrawable(ArcShape,OvalShape,PathShape,RectShape,RoundRectShape)对普通图形的包装;;
Shader(SweepGradient,LinearGradient,BitmapShader)着色器,渐变在内;
PathEffect(CornerPathEffect,DashPathEffect和DiscretePathEffect)路径特效,可制作复杂的图形边框;
5.BitmapDrawable
对Bitmap的一种封装,可以设置它包装的bitmap在BitmapDrawable区域中的绘制方式。
使用6.InsetDrawable
表示把一个Drawable嵌入到另外一个Drawable的内部,并且在内部留一些间距。
padding:背景drawable不变,内容与容器有边距;
insetDrawable:背景drawable与内容都形成与容器的边距;
适用场景:当控件需要的背景比实际的边框小的时候比较适合使用InsetDrawable,eg:自定义dialog
使用7.ClipDrawable
针对自身进行裁剪复制显示。(进度条实现的原理,有效减少图片资源)
使用8.RotateDrawable
用来对Drawable进行旋转,通过setLevel来控制旋转,最大值10000。
使用9.AnimationDrawable
AnimationDrawable是用来实现Android中的帧动画
使用10.LayerDrawable
层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来绘制,索引值最大的Drawable会被绘制在最上层。
seekbar中 图片层叠11.TransitionDrawable
过渡Drawable:LayerDrawable的一个子类,但只有两层,提供从一层到另一层透明度动画过渡效果。
使用12.LevelListDrawable
用于管理轮流替换的一组drawable,level-list中某项的android:maxLevel数值大于或者等于setLevel设置的数值,就会被加载(仅一项)。
(一般使用时 setLevel的级别 等于maxLevel级,那级所引用的图片将显示)
使用13.StateListDrawable
状态列表选择器selector.xml会被解析成一个StateListDrawable对象,然后进行解析。
(只要有一个状态与之相配,就会应用,所以一般小范围放前面)
使用