详解Android中Drawable方法
本文为大家分享了Android中Drawable方法的详细使用方法,供大家参考,具体内容如下
1. BitmapDrawable相关方法:
新建在drawable目录下面,示例如下:
具体每个属性的解释如下:
<?xml version="1.0" encoding="utf-8"?>android:antialias="true" android:dither="true" android:filter="true" android:gravity="center" android:mipMap="false" android:src="@drawable/ic_launcher" android:tileMode="disabled" />
上述的排版方式只是为了方便查看,不能直接复制到代码中使用
2. ShapeDrawable,纯色、渐变色的drawable
基本示例代码:
<?xml version="1.0" encoding="utf-8"?>
各个标签详细说明:
表示图形形状,有四个选项rectangle(矩形)、oval(椭圆)、line(横线)、ring(圆环),默认是矩形。在使用line和ring时候需要通过stroke属性来指定线的宽度和颜色,否则显示效果将会异常。
当设置ring时,有五个特殊的属性,对应如下:
android:innerRadius――圆环内半径,和innerRadiusRatio同时存在时,以innerRadius为准。
android:thickness――圆环的厚度,及外半径减去内半径
android:innerRAdiusRatio――内半径占整个drawable的宽度比例,默认为9
android:thicknessRadio――厚度咱整个Drawable的比例,默认为3,计算方式为厚度=宽度/n
android:useLevel――一般都应该使用false,除非被当做LevelListDrawable来使用时候
表示shape的四个角的角度。它只试用与矩形,角度值的是圆角的程度,用px来表示。其中radius用来为四个角同意设置角度,优先级比较低。topLeftRadius、topRightRadius、bottomLeftRadius、bottomRightRadius分别表示左上、右上、左下、右下角的角度。
表示渐变填充,它与标签互斥,包含的几个属性值意义如下:
android:angle――渐变角度,默认为零,值必须为45的倍数。
android:centerX――渐变中心点横坐标
android:centerY――渐变中心点纵坐标
android:startColor――渐变起始颜色
android:centerColor――渐变的中间色
android:endColor――渐变的结束色
android:gradientRadius――渐变半径
android:useLevel――一般为false,仅当android:type=”radial”
android:type――渐变的类型,有个linear(线性渐变)、radial(径向渐变)、sweep(扫描线渐变)三种,其中默认为线性渐变
通过android:color既可指定shape中填充的颜色
包含以下常用标签:
android:width――描边的宽度,越大则shape的边缘就会看起来越粗
android:color――描边的颜色
android:dashWidth――组成虚线的线段的宽度
android:dashGap――组成虚线的线段之间的间隔,间隔越大空隙越大
可以理解为内边距,使用起来和直接在view中加边距类似包含四个属性:android:top、android:bottom、android:left和android:right,分别表示上下左右内边距。
有两个属性android:width和android:height,表示该view的宽高,类似图片本身的宽高,在view中会视情况拉伸。
3. LayerDrawable层次化的Drawable,类似图层
多个drawable的集合,类似图层概念,通过将不同的drawable放置在不同的层上面从而达到一种叠加后的效果,它的语法规则如下:
<?xml version="1.0" encoding="utf-8"?>
一个layer-list可以包含多个item,每个item表示一个drawable。上下左右是个属性表示Drawable相对于view的上下左右偏移量,单位为像素。可以通过drawable来直接引用一个drawable资源。也可以直接在item标签下自定义drawable。
默认情况下,layer-list中所有的drawable都会被缩放到view的大小。layer-list有层次概念,下面的drawable会覆盖上面的drawable。通过合理分层,可以实现一些特殊的叠加效果。
4. StateListDrawable(选择器)
选择器标签,对应的标签是
<?xml version="1.0" encoding="utf-8"?>android:constantSize="true" android:dither="true" android:variablePadding="true"> - android:drawable="@drawable/ic_launcher" android:state_pressed="true" android:state_focused="true" android:state_hovered="true" android:state_selected="true" android:state_checkable="true" android:state_checked="true" android:state_enabled="true" android:state_activated="true" android:state_window_focused="true">
注意:如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用。(不是通过最佳匹配)如果一个item没有任何的状态说明,那么它将可以被任何一个状态匹配。所以默认的item应该放到最后一条,否则会导致下边的选项没有效果。
5. LevelListDrawable(不同等级切换不同drawable)
LevelListDrawable对应于
<?xml version="1.0" encoding="utf-8"?>- android:drawable = "@drawable/ic_lunch" android:maxLevel = "2" android:minLevel = "1">
6. TransitionDrawable(可实现淡入淡出)
对应的是
<?xml version="1.0" encoding="utf-8"?>- android:drawable = "@drawable/ic_lunch" android:id = "@+id/item1" android:top = "1dp" android:right = "1dp" android:bottom = "1dp" android:left = "1dp">
使用方式:
定义渐变
<?xml version="1.0" encoding="utf-8"?>
将渐变添加到背景
在代码中控制
TextView textView = (TextView)findViewById(R.id.button);TransitionDrawable drawable = (TransitionDrawable)textView.getBackground();drawable.startTransition(1000);
7. InsetDrawable(内嵌一个Drawable)
可以将Drawable内嵌到自己内部,并在四周留出空隙,一般用在希望自己背景比自己实际区域小的view中。
<?xml version="1.0" encoding="utf-8"?>android:drawable="@drawable/ic_launcher" android:insetBottom="2dp" android:insetLeft="2dp" android:insetRight="2dp" android:insetTop="2dp" >
8. ScaleDrawable(缩放类,可以缩小)
对应的代码如下:
<?xml version="1.0" encoding="utf-8"?>android:drawable="@drawable/ic_launcher" android:scaleGravity="center" android:scaleHeight="50%" android:scaleWidth="50%" >
在使用时时候必须设置Drawable的级别,否则无法使用,设置级别的代码如下:
View testScale = findViewById(R.id.test_scale);scaleDrawable testScaleDrawable = (ScaleDrawable)testScale.getBackground();testScaleDrawable.setLevel(1);//范围是1~10000,只要不为零就可以
9. ClipDrawable(根据不同设置裁剪Drawable)
可以根据当前等级来裁剪另一个Drawable,具体的代码如下:
<?xml version="1.0" encoding="utf-8"?>android:clipOrientation="horizontal" android:drawable="@+id/icon" android:gravity="top" >
top――放置到顶部,如果为竖直裁剪,那么从底部开始裁剪
bottom――放到底部,如果为竖直裁剪,那么从顶部开始裁剪
left――放到左边,如果为水平裁剪,那么从右开始裁剪(此为默认)
right――放到右边,若为水平裁剪,那么从左边开始裁剪
center_vertical――竖直居中,竖直裁剪时,上下同时裁剪
fill_vertical――竖直方向填充,如果为竖直裁剪,仅当clipDrawable等级为0时(此时不可见,为完全裁剪),才有裁剪行为
(水平方向也具有和竖直类似的属性,对应为center_horizontal和fill_horizontal,用法与上面两个类似)
center――中部居中,竖直裁剪时上下同时减,水平裁剪时左右同时减
fill――充满整个drawable,当clipDrawable等级为零时有效
clip_vertical――附加选项,表竖直方向裁剪
clip_horizontal――附加选项,表竖直方向裁剪
使用时候需要在代码中设置等级具体代码如下
ImageViwe testClip = (ImageView)findViewById(R.id.test_clip);ClipDrawable testClipDrawable = (ClipDrawable)testClip.getDrawable();//等级为从0到10000,等级0表示完全裁剪,等级10000表示不裁剪testClipDrawable.setLevel(5000);
以上就是本文的全部内容,希望对大家的学习有所帮助。
更多相关文章
- android 开发 xml绘制Selector 一 基础篇
- Android中shape的使用
- Android(安卓)Selector 与 Shape 基本用法
- android shape的使用
- Android(安卓)Selector 与 Shape 基本用法
- Android(Lollipop/5.0) Material Design(五) 定义阴影和裁剪View
- Android(安卓)自定义shape圆形按钮
- android设置头像
- android设置头像