11.1 Drawable

2018-08-22  本文已影响0人  jadefly

Android中提供了13种的 Drawable

分类

Drawable资源分为两种:    

1.普通图片资源,一般放在res/mipmap下

2.编写的xml形式的drawable资源,放在res/drawable下

命名:[a-z0-9_.](即:只能是字母数字及和.),小写,不能以数字开头


1.ColorDrawable

当我们将ColorDrawable绘制到Canvas(画布)上的时候, 会使用一种固定的颜色来填充Paint,然后在画布上绘制出一片单色区域。

colorDrawable

2.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对象,然后进行解析。     

(只要有一个状态与之相配,就会应用,所以一般小范围放前面)

使用
上一篇下一篇

猜你喜欢

热点阅读