Android xml file之drawable

在用eclipse新建android xml file,如果选中的type为drawable时,有以下多种项目:animation-list,bitmap,clip,color,corners,gradient,inset,item,nine-patch,padding,rotate,scale,selector,shape,size,solid,stroke。现具体记录如下:

1、animation-list

主要用于Frame animation,主体下面包含三个属性:

android:visible 是否可见
android:variablePadding 被选项目padding是否可变
android:oneshot 是否只执行一次

item中需要包括

android:drawable 资源文件

android:duration 播放时长(毫秒级别?)

2、bitmap

 包含以下属性:

android:antialias 抗锯齿
android:dither 抖动,主要功能是从ARPG变为RPG时使图片显示更好的效果
android:filter=""
android:gravity=""
android:src=""
android:tileMode 平铺模式属性有disabled,clamp(固定复制边缘色彩 ),repeat(重复X、Y 轴进行重复图片显示,也就是我们说要说的平铺),mirror(镜像在水平和垂直方向上使用交替镜像的方式重复图片的绘制)

3、clip

把原图的长,宽,厚度都分成10000level,以此切割,图片剪切,初始包含三个属性

android:clipOrientation 剪切方向,值为vertical和horizontal
android:gravity 剪切位置
android:drawable 初始资源

使用时候注意level值,可用于图片进度条和图片加载过程

4、color

设置ARPG或RPG值作为颜色

5、shape(http://blog.csdn.net/lonelyroamer/article/details/8254592

<shape>
定义这是一个GradientDrawable,必须作为根元素。

属性:

xmlns:android
String类型。必须的,定义xml文件的命名空间,必须是"http://schemas.android.com/apk/res/android".
android:shape
关键字。定义shape的值,必须是下面的之一:
描述
"rectangle" 矩阵,这也是默认的shape
"oval" 椭圆
"line" 一条水平的直线。这种shape必须使用 <stroke> 元素来定义这条线的宽度
"ring" 圆环

下面的属性只有当 android:shape="ring"才使用:

android:innerRadius
尺寸。 内环的半径。一个尺寸值(dip等等)或者一个尺寸资源。
android:innerRadiusRatio
Float类型。这个值表示内部环的比例,例如,如果android:innerRadiusRatio = " 5 ",那么内部的半径等于环的宽度除以5。这个值会被android:innerRadius重写。 默认值是9。
android:thickness
尺寸。环的厚度,是一个尺寸值或尺寸的资源。
android:thicknessRatio
Float类型。厚度的比例。例如,如果android:thicknessRatio= " 2 ",然后厚度等于环的宽度除以2。这个值是被android:innerRadius重写, 默认值是3。
android:useLevel
Boolean类型。如果用在 LevelListDrawable里,那么就是true。如果通常不出现则为false。
<corners>
为Shape创建一个圆角,只有shape是rectangle时候才使用。

属性:

android:radius
Dimension。圆角的半径。会被下面每个特定的圆角属性重写。
android:topLeftRadius
Dimension。top-left 圆角的半径。
android:topRightRadius
Dimension。top-right 圆角的半径。
android:bottomLeftRadius
Dimension。 bottom-left圆角的半径。
android:bottomRightRadius
Dimension。bottom-right圆角的半径。

注意:每个圆角半径值都必须大于1,否侧就没有圆角。

             下面的话不明白,我直接设置圆角为0就可以不圆了,其余的设置有圆角,一样的可行。不知道它为什么要这么讲。

(If you want specific cornersto not be rounded, a work-around is to use android:radius to set a default cornerradius greater than 1, but then override each and every corner with the values you reallywant, providing zero ("0dp") where you don't want rounded corners.)

<gradient>
指定这个shape的渐变颜色。

属性:

android:angle
Integer。渐变的角度。 0 代表从 left 到 right。90 代表bottom到 top。必须是45的倍数,默认为0
android:centerX
Float。渐变中心的相对X坐标,在0到1.0之间。
android:centerY
Float。渐变中心的相对Y坐标,在0到1.0之间。
android:centerColor
Color。可选的颜色值。基于startColor和endColor之间。
android:endColor
Color。 结束的颜色。
android:gradientRadius
Float 。渐变的半径。只有在 android:type="radial"才使用
android:startColor
Color。开始的颜色值。
android:type
Keyword。渐变的模式,下面值之一:
描述
"linear" 线形渐变。这也是默认的模式
"radial" 辐射渐变。startColor即辐射中心的颜色
"sweep" 扫描线渐变。
android:useLevel
Boolean。如果在LevelListDrawable中使用,则为true

<padding>

     内容与视图边界的距离

属性:

android:left
Dimension。左边填充距离.
android:top
Dimension。顶部填充距离.
android:right
Dimension。右边填充距离.
android:bottom
Dimension。底部填充距离.
<size>
这个shape的大小。

属性:

android:height
Dimension。这个shape的高度。
android:width
Dimension。这个shape的宽度。

注意:默认情况下,这个shape会缩放到与他所在容器大小成正比。当你在一个ImageView中使用这个shape,你可以使用 android:scaleType="center"来限制这种缩放。

<solid>
填充这个shape的纯色

属性:

android:color
Color。颜色值,十六进制数,或者一个Color资源
<stroke>
这个shape使用的笔画,当android:shape="line"的时候,必须设置改元素。

属性:

android:width
Dimension。笔画的粗细。
android:color
Color。笔画的颜色
android:dashGap
Dimension。每画一条线就间隔多少。只有当android:dashWidth也设置了才有效。
android:dashWidth
Dimension。每画一条线的长度。只有当 android:dashGap也设置了才有效。

6、inset

InsetDrawable 表示一个drawable嵌入到另外一个drawable内部,并且在内部留一些间距,相当于将一张drawable加了padding生成一个新的drawable。

其属性如下:

android:drawable 资源文件

android:insetTop、android:insetRight、android:insetBottom、android:insetLeft 外围值

7、动画(translate、scale、alpha、rotate)(http://blog.csdn.net/sun6255028/article/details/6735025

Androidanimation由四种类型组成

XML

alpha 渐变透明度动画效果
scale 渐变尺寸伸缩动画效果
translate 画面转换位置移动动画效果
rotate 画面转移旋转动画效果



JavaCode

AlphaAnimation 渐变透明度动画效果
ScaleAnimation 渐变尺寸伸缩动画效果
TranslateAnimation 画面转换位置移动动画效果
RotateAnimation 画面转移旋转动画效果


Android动画模式

Animation主要有两种动画模式

一种是tweened animation(渐变动画)

XML JavaCode
alpha AlphaAnimation
scale ScaleAnimation



一种是frame by frame(画面转换动画)

 

XML中 JavaCode
translate TranslateAnimation
rotate RotateAnimation

 

 

Android动画解析

alpha xml 淡出效果

 

 

[cpp] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">   
  3. <alpha   
  4.     android:fromAlpha="1.0"    
  5.     android:toAlpha="0.0"    
  6.     android:duration="500"  />   
  7. </set>   
  8. <!--    
  9.     fromAlpha:开始时透明度   
  10.     toAlpha: 结束时透明度   
  11.     duration:动画持续时间 -->  

 

 

alpha xml 淡入效果

 

[cpp] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">   
  3. <alpha   
  4.     android:fromAlpha="0.0"    
  5.     android:toAlpha="1.0"    
  6.     android:duration="500"  />   
  7. </set>   
  8. <!--    
  9.     fromAlpha:开始时透明度   
  10.     toAlpha: 结束时透明度   
  11.     duration:动画持续时间 -->  



 

rotate.xml 旋转效果: 

[html] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">  
  3. <rotate                                        
  4.     android:interpolator="@android:anim/accelerate_decelerate_interpolator"   
  5.     android:fromDegrees="300"   
  6.     android:toDegrees="-360"   
  7.     android:pivotX="10%"   
  8.     android:pivotY="100%"   
  9.     android:duration="10000" />   
  10. </set>   
  11. <!--    
  12.   fromDegrees   动画开始时的角度   
  13.   toDegrees     动画结束时物件的旋转角度,正代表顺时针     
  14.   pivotX    属性为动画相对于物件的X坐标的开始位置  
  15.   pivotY    属性为动画相对于物件的Y坐标的开始位置    -->   



scale.xml 缩放效果: 

 

[cpp] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">   
  3. <scale     
  4.     android:interpolator= "@android:anim/decelerate_interpolator"         
  5.     android:fromXScale="0.0"     
  6.     android:toXScale="1.5"     
  7.     android:fromYScale="0.0"     
  8.     android:toYScale="1.5"     
  9.     android:pivotX="50%"     
  10.     android:pivotY="50%"     
  11.     android:startOffset="0"     
  12.     android:duration="10000"    
  13.     android:repeatCount="1"     
  14.     android:repeatMode="reverse"  />   
  15. </set>   
  16.   
  17. <!--    
  18. fromXDelta,fromYDelta       起始时X,Y座标,屏幕右下角的座标是X:320,Y:480   
  19. toXDelta, toYDelta      动画结束时X,Y的座标 --> <!--    
  20. interpolator                    指定动画插入器  
  21. 常见的有加速减速插入器         accelerate_decelerate_interpolator  
  22. 加速插入器               accelerate_interpolator,  
  23. 减速插入器               decelerate_interpolator。   
  24. fromXScale,fromYScale,         动画开始前X,Y的缩放,0.0为不显示,  1.0为正常大小  
  25. toXScale,toYScale,          动画最终缩放的倍数, 1.0为正常大小,大于1.0放大  
  26. pivotX,  pivotY         动画起始位置,相对于屏幕的百分比,两个都为50%表示动画从屏幕中间开始   
  27. startOffset,                动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间,  
  28.                     单位毫秒 duration,一次动画效果消耗的时间,单位毫秒,  
  29.                     值越小动画速度越快 repeatCount,动画重复的计数,动画将会执行该值+1次   
  30.                     repeatMode,动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。  
  31.                     restart为重新执行,方向不变 -->  



 



translate.xml 移动效果: 

[html] view plaincopy
 
    1. <?xml version="1.0" encoding="utf-8"?>   
    2. <set xmlns:android="http://schemas.android.com/apk/res/android">  
    3. <translate   
    4.     android:fromXDelta="320"   
    5.     android:toXDelta="0"   
    6.     android:fromYDelta="480"   
    7.     android:toYDelta="0"   
    8.     android:duration="10000" />   
    9. </set>   
    10. <!--    
    11. fromXDelta,fromYDelta   起始时X,Y座标,屏幕右下角的座标是X:320,Y:480   
    12. toXDelta, toYDelta     动画结束时X,Y的座标 -->   

8、selector

背景选择

根据不同状态选择不同的背景

state:

        android:drawable="@[package:]drawable/drawable_resource"
       
android:state_pressed=["true" | "false"]
       
android:state_focused=["true" | "false"]
       
android:state_hovered=["true" | "false"]
       
android:state_selected=["true" | "false"]
       
android:state_checkable=["true" | "false"]
       
android:state_checked=["true" | "false"]
       
android:state_enabled=["true" | "false"]
       
android:state_activated=["true" | "false"]
       
android:state_window_focused=["true" | "false"] />
posted @ 2013-12-22 18:14  freedomCoder  阅读(721)  评论(0)    收藏  举报