最近在看关于Android的书籍,发现居然把Drawable当做一个章节来讲,感觉没有必要啊,Drawable不就是图片引用吗。深入理解后才发现我们平常用的只是比较常用和简单的,Drawable还是有很多其他实现方式的。今天就详细讲解一下Drawable。
其实Drawable的种类有很多,常见的有BitmapDrawable、ShapeDrawable、LayerDrawable、StateListDrawable。下面详细讲解一下Drawable的各个使用方式
开发中基本不使用,因为我们在控件调用图片时直接通过src或者background的方式就直接引用图片了,而bitmapDrawable是对图片进行重新描述和定义,如果图片没有特殊情况不会多此一举的,下面讲一下具体用法。
Drawable 下新建bitmap.xml:是对需要的图片进行重新定义
(1)android:antialias:表示是否开启抗锯齿功能,一般为true;
(2)android:dither:表示是否开启抖动,一般为true;
(3)android:filter:表示是否开启过滤效果,一般为true;
(4)android:tileMode:表示是否平铺模式 ,disable默认不平铺;repeat表示水平和竖直方向的平铺;mirror表示水平和竖 直方向的镜面投影效果,clamp表示四周图像会扩展到周围区域。
使用自定义的bitmap方式
ShapeDrawable可以实现矩形、圆形、线和圆环;它既可以是纯色的图形,也可以是渐变色的图形
(1)代码效果图如下
(2)实现代码:
1、shape
根元素,其android:shape属性定义了这个xml文件定义的形状,可以是retangle(矩形),oval(椭圆),line 和 ring(圆环)。
2、corners(角)
3、stroke(描边)
android:dashWidth:组成虚线的线段的宽度
android:dashGap="2dp":组成虚线的线段之间的间隔
4、gradient(渐变)
android:angle:渐变的角度,默认为0,其值必须是45的倍数
android:centerX:渐变中心点的横坐标
android:startColor:渐变的起始颜色,还有中间色和结束色
android:gradientRadius:渐变半径
android:type:渐变类别;line(线性渐变)、radial(径向渐变)sweep(扫描渐变)
5、solid(填充)
表示纯色填充
6、padding
表示包含它的view的空白
7、size
图片大小
表示多个图片叠加形成的新的图片,可以实现的效果图如下:
(2)实现代码
比较常用,也是一个Drawable集合,会根据View的点击状态来显示不同的图片,最常见的就是button按钮点击,对应标签是
(1)实现效果
(2)实现代码
表示一个Drawable,将每个Drawable设置为各个等级,根据设置的等级显示不同的图片,标签为
表示两个Drawable的淡入淡出效果,标签为
(2)实现代码如下,首先在Drawable文件夹下创建一个xml
(3)在自己的布局中使用该drawable
(4)还需要在Activity中进行加载
imgView=findViewById(R.id.imgView);
TransitionDrawable drawable=(TransitionDrawable)imgView.getBackground();
drawable.startTransition(2000);
我们一般在使用图片时只需要直接引用drawable就可以,但是可以使用ShapeDrawable来实现一些例如圆形、矩形、渐变色等背景色的实现,这样可以减少APK的大小。
如果需要实现多个图片叠加感觉布局麻烦就使用<layer-list>;
如果涉及到按钮点击显示不同的效果,就用
如果在页面中某个图片显示完成后还需要显示另一张图片,可以使用