Android的Drawable

来源:互联网 发布:一句话网络段子精选 编辑:程序博客网 时间:2024/05/18 20:31

Drawable一般都是通过xml文件定义的,也可以通过代码来创建具体的Drawable对象。通过getIntrinsicWidth和getIntrinsicHeight这两个方法可以获取到Drawable的内部宽/高,一张图片形成的Drawable的内部宽/高就是图片的宽/高,但是一个颜色所形成的Drawable就没有内部宽/高的概念,内部宽/高不等于它的大小。
1.Bitmap
通过xml描述的Bitmap可以比原始图片设置更多的效果
- android:src:图片资源id;
- android:antialias:是否开启抗锯齿功能,开启后会让图片变得平滑,应该开启;
- android:dither:是否开启抖动效果。当图片的像素配置和手机屏幕的像素配置不一致时,开启这个选项可以让高质量的图片在低质量的屏幕上保持较好的显示效果,一般应该开启;
- android:filter:是否开启过滤效果。当图片被拉伸或压缩时,开启过滤效果可以保持较好的显示效果,一般应该开启;
- android:gravity:当图片小于容器尺寸时,设置此选项对图片进行定位;
- android:maipMap:纹理映射,默认false;
- android:tileMode:平铺模式。默认disable关闭,开启后,gravity属性会被忽略。repeat、mirror、clamp;
2.Shape
shape标签创建的Drawable实体类实际上是GradienttDrawable
- android:shape:rectangle(矩形),oval(椭圆),line(横线),ring(圆环),line和ring必须通过stroke标签来指定线的宽度和颜色等。针对ring圆环,有5个特殊属性:android:innerRadius(圆环内半径),android:thickness(圆环厚度),android:innerRadiusRatio(内半径占比,默认为9),android:thicknessRadio(厚度占比,默认为3),android:useLevel(一般为false);
- android:corners:表示四个角的角度,只适用于rectangle矩形。android:radius,android:topLeftRadius等属性;
- android:gradient:与solid标签互相排斥,solid表示纯色填充,gradient表示渐变效果。android:angle(渐变的角度,默认为0,值为45的倍数,0表示从左到右,90表示从上到下),android:centerX,android:centerY(渐变的中心点坐标),android:startColor,android:centerColor,android:endColor(渐变的起始色、中间色、结束色),android:type(渐变类型,linear[线性渐变],radial[径向渐变],sweep[扫描线渐变]),android:gradientRadius(渐变半径,仅当径向渐变时有效),android:useLevel(一般为false);
- android:solid:android:color指定shape中填充的颜色;
- android:stroke:描边。android:width(描边的宽度),android:color(描边的颜色),android:dashWidth(虚线描边的宽度)android:dashGap(虚线段之间的间隔);
- android:padding:表示包含它的View的空白,left,top,right,bottom四个属性;
- android:size:android:width,android:height指定Shape的固有宽高
3.layer-list
层次化的Drawable集合,通过将不同的Drawable放置在不同的层上面达到一种叠加的效果。每个item表示一个Drawable,下面的item会覆盖上面的item。比较常用的属性有android:top,android:bottom,android:left,android:right,表示Drawable相对于View的上下左右的偏移量,可以用android:drawable直接引用已有的Drawable资源,也可以在item中自定义Drawable,bitmap需要使用android:gravity才能控制图片的显示效果;
4.selector
5.level-list
表示一个Drawable集合,每个Drawable都有一个等级,由android:minLevel和android:maxLevel来指定,可以通过View的setLevel方法或者ImageView的setImageLevel来切换Drawable
6.transition
用于实现两个Drawable之间的淡入淡出效果,通过TransitionDrawable的startTransition和reverseTransition来实现淡入淡出效果以及它的逆过程
7.inset
将其他Drawable内嵌到自己当中,并可以在四周留有一定间距
8.scale
根据自己的level将制定Drawable缩放到一定比例
9.clip
根据自己的level来裁剪另一个Drawable

0 0
原创粉丝点击