Android学习笔记--应用资源的使用(Drawable)

6.4  使用Drawable资源
6.4.1 图片资源
直接放入/res/drawable-xxx目录下,SDK会自动加载


6.4.2 StateListDrawable资源
用于组织多个Drawable对象
对象所显示的Drawable对象会随目标组件状态的改变而自动切换
语法:
<selector ....>
<item android:color="hex-color"
android:state_pressed=["true" | "false"] />
</selector>
<item>中支持的状态:
 属性值     含义
state_active 是否处于激活状态
state_checkable 是否处于可勾选状态
state_checked 是否处于已勾选状态
state_enabled 是否处于可用状态
state_first 是否处于开始状态
state_focused 是否处于已得到焦点状态
state_last 是否处于结束状态
state_middle 是否处于中间状态
state_pressed 是否处于已被按下状态
state_selected 是否处于已被选中状态
state_window_focused 是否窗口已得到焦点状态


6.4.3 LayerDrawable资源
类似于StateListDrawable
可包含数组,会按数组顺序,将索引最大的Drawable对象绘制在最上面
语法:
<layer-list ...>
<item android:id="@android:id/background"
android:drawable="@drawable/grow">
</layer-list>


6.4.4 ShapeDrawable资源
用于定义一个基本的集合图形
android:shape=["rectangle"|"oval"|"line"|"ring"]
语法:
<shape ... android:shape=["rectangle"|"oval"|"line"|"ring"]>
<!--定义几何图形的四个角的弧度-->
<corners
android:radius=""
android:topLeftRadius=""
android:topRightRadius=""
android:bottomLeftRadius=""
android:bottomRightRadius=""/>


<!--定义使用渐变色填充-->
<gradient
android:angle=""
android:centerX=""
android:centerY=""
android:centerColor=""
android:endColor=""
android:gradientRadius=""
android:startColor=""
android:type=["linear"|"radial"|"sweep"]
android:usesLevel=["true"|"false"]/>

<!--定义几何形状的内边距-->
<padding
android:left=""
android:top=""
android:right=""
android:bottom=""/>


<!--定义几何形状的大小-->
<size
android:width=""
android:color=""
android:dashWidth=""
android:dashGap=""/>


<!--定义使用单色颜色填充-->
<solid
android:color=""/>


<!--定义为几何形状绘制边框-->
<stroke
android:width=""
android:color=""
android:dashWidth=""
android:dashGap=""/>
</shape>
*PS:
solid:实心,就是填充的意思
android:color指定填充的颜色


gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。


stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp" 
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。


corners:圆角
android:radius为角的弧度,值越大角越圆。


6.4.5 ClipDrawable资源
代表从其他位图上截取的一个“图片片段”
语法:
<clip ...
android:drawable="@drawable/drawable_resource" *指定截取的源Drawable
android:clipOrientation=["horizontal"|"vertical"] *指定截取方向,可设置水平截取或垂直截取
android:gravity=["top"|"left"|"right"|"bottom"|"center_vertical"|"fill_vertical"|"center_horizontal"|"fill_horizontal"|"center"|"fill"|"clio_vertical"|"clip_horizontal"]> *指定截取时的对齐方式
</clip>


*PS: 使用ClipDrawable对象可调用setLevel(int level)控制截取图片的部分,只要设置一个定时器,让程序不断调用ClipDrawable的setLevel()方法即可实现图片徐徐展开的效果


6.4.6 AnimationDrawable资源
语法:
<set ... 
android:interpolator="@anim/interpolator_resource"
android:shareInterpolator=["true"|"false"] *使所有的变换效果使用相同的动画速度
android:duration="持续时间">

<!--设置透明度的改变-->
<alpha
android:fromAlpha=""
android:toAlpha=""/>

<!--设置图片进行缩放改变-->
<scale
android:fromXScale=""
android:toXScale=""
android:fromYScale=""
android:toYScale=""
android:pivotX="" *中心点坐标
android:pivotY=""/>


<!--设置图片进行位移变换-->
<translate
android:fromXDelta=""
android:toXDelta=""
android:fromYDelta=""
android:toYDelta=""/>


<!--设置图片进行旋转-->
<rotate
android:fromDegrees=""
android:toDegrees=""
android:pivotX="" *中心点坐标
android:pivotY="" />
</set>


*所有标签内都可指定一个android:interpolator属性
linear_interpolator: 匀速变换
accelerate_interpolator: 加速变换
decelerate_interpolator: 减速变换

你可能感兴趣的:(android)