Drawable

来源:互联网 发布:hexo博客绑定域名 编辑:程序博客网 时间:2024/05/20 16:42

一.BitmapDrawable(图片一张)

<?xml version="1.0" encoding="utf-8"><bitmapxmlns:android="http://schemas.android.com/apk/res/android"android:src="@~"  //resource资源idandroid:antialias="true|false"  //抗锯齿功能,开启时可以让图片平滑android:dither="true|false"     //抖动功能,可以让高质量图片在低质量屏幕上不失真android:filter="true|false"     //过滤功能,图片尺寸被拉升或压缩时,保持较好显示效果android:gravity="top|bottom|left|right|center_vertical|fill_vertical|center_horizontal|fill_horizontal|center|fill|clip_vertical|clip_horizontal"android:tileMode="disabled|clamp|repeat|mirror"    平铺模式  关闭|像素扩展|重复|镜像

二。ShapeDrawable(颜色构成图片)

<?xml version="1.0" encoding="utf-8"?>  <shape xmlns:android="http://schemas.android.com/apk/res/android"   android:shape="rectangle|oval|line|ring">    //矩形|椭圆|横线|圆环<gradient    //渐变效果android:startColor="color"       //开始色android:centerColor="color"      //中间色android:endColor="color"        //结束色android:angle="integer"      //渐变的角度android:centerX="integer"   //渐变的中心点横坐标android:centerY="integer"  //渐变的中心点纵坐标android:gradientRadius="integer"  //渐变半径android:type="linear|radial|sweep"//线性渐变|径向渐变|扫描渐变/><padding android:left="integer"  //view的边缘留空 左留空android:top="integer"  //上留空android:right="integer"  //右留空android:bottom="integer" />  //下留空<corners android:radius="integer" //四个角角度android:topLeftRadius= "integer"//左上角角度android:topRightRadius="integer" //右上角角度android:bottomLeftRadius="integer" //左下角角度android:bottomRightRadius="integer"/>  //右下角角度<sizeandroid:widht="integer"  //shape的固有宽android:height="integer"/>  //shape的固有高<solid       //填充android:color="color"/>  //填充色<stroke       //描边android:color="color"  //描边颜色android:width="integer"  //描边宽度android:dashWidth="integer"   //虚线线段宽度android:dashGap="integer"/>    //虚线线段间隔宽度</shape> 

三.LayerDrawable(drawable叠加集合)

<?xml version="1.0" encoding="utf-8"?>  <layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><itemandroid:drawable="@~"  android:id="@+id/~"android:top="dimension"android:right="dimension"android:left="dimension"android:bottom="dimension"/></layer-list>

四.StateListDrawable(根据View的状态选择合适的drawable)

<?xml version="1.0" encoding="utf-8"?>  <selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true|false"    //固有大小是否随状态改变android:dither="true|false"       //抖动效果android:variablePadding="true|false">   //padding是否随状态改变<itemandroid:drawable="@~"     //资源文件android:state_pressed="true|false" //按下状态android:state_focused="true|false" //获得焦点android:state_selected="true|false" //选择android:state_checkable="true|false" //是否能切换选中状态android:state_checked="true|false" //选中android:state_enalbed="true|false" //是否使能android:state_window_focused="true|false"/> //</selector>

系统会从上到下依次查找,当view的状态符合条件时,即选用该条件对应的drawable

所以优先级高的状态放上面,默认的不附带状态放最后面


五LevelListDrawable(根据view的等级选用不同的drawalbe)

<?xml version="1.0" encoding="utf-8"?>  <level-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@~"android:maxLevel="integer"    //最大等级(0~10000)android:minLevel="integer"/>  //最小等级 (0~10000) 0最小,10000最大</level-list>
设置等级可以通过Drawable的setLevel方法   或者  imageView的setImageLevel来设置


六.ClipDrawable(根据等级裁剪drawable)

<?xml version="1.0" encoding="utf-8"><clipxmlns:android="http://schemas.android.com/apk/res/android"android:drawalbe="@~"  //resource资源android:gravity="top|bottom|left|right|center_vertical|fill_vertical|center_horizontal|fill_horizontal|center|fill|clip_vertical|clip_horizontal"android:clipOrientation="horizontal|vertical"/>  //裁剪方向


使用的时候还要设置等级

ImageView v = (ImageView)findViewById(R.id.t);ClipDrawable drawable = (ClipDrawable)v.getDrawable();drawable.setLevel(10000);
等级变化范围为0~10000,以上10000表示不裁剪,0表示裁剪全部,1000表示裁剪90%




参考:Android开发艺术探索

0 0