Drawable综述

来源:互联网 发布:淘宝纪念币是真的吗 编辑:程序博客网 时间:2024/05/20 18:02

作用:

1,作为ImageView中的图像
2,作为View的背景。

实现方式:

可以用代码实现,也可以用xml来实现。
用xml实现比较简单,也用的最多。

种类:

BitMapDrawable和nine-patch

对应的tag分别是bitmapnine-patch

这两种只是对已有的图片资源的简单封装,和本身的Drawable区别就是加了一些属性之类的东西。换句话说,bitmap就是带属性的图片。

StateListDrawable和LevelListDrawable

对应的tag分别是selectorlevel-list

这两个类别的Drawable的作用都是在众多的图片中选择一张图来显示。StateList是根据系统事件来控制的,LevelList是通过Drawable的setLevel()或者ImageView的setImageLevel来切换图片的。

ShapeDrawable

对应的tag是shape

如果想用xml定义一个图片资源,那用到的肯定就是ShapeDrawable,这个类可以提供了很多种子标签来自定义一个图片资源。常用的有shape,corners,gradient,solid,stroke,padding,size。

注意:size和shape是必选标签,gradient和solid二选一。corner是shape选择了rectangle之后的可选项目,stroke和padding是可选项。
总之,ShapeDrawable是做demo经常会用到的,在实际的开发过程中则基本不会用到。

LayerDrawable

对应的tag是layer-list

layerlist可以把多个图片合成一张,顺序是先放的在后面,后面放的显示靠前。需要注意的是,item标签可以有子标签在里面,比如说shape。item自身的属性是相对于构成之后的图片的,比如设置了bottom=”10dp”那么这个item的底部距离生成的图片底部8dp。

ClipDrawable

对应的tag是clip

ClipDrawable在我看来就是对LevelListDrawable和LayerDrawable的一个综合产品。clip标签中也可以添加shape标签。但是他可以配合ImageView完美的满足进度条的需要。ImageView设置background属性和src属性,配合setLevel()函数。注意这里的level满值是10000。在Java文件中对应的代码如下

iv= (ImageView) findViewById(R.id.iv);        ClipDrawable clipDrawable=(ClipDrawable)iv.getDrawable();        clipDrawable.setLevel(7000);

注意需要把ImageView得到的Drawable强制转换为ClipDrawable,否则会报错。

0 0
原创粉丝点击