在android中,有很多xml配置文件,其中,大家最熟悉的就是layout里面的xml文件。但是,在其他文件夹中,也有很多xml文件,针对某个xml或许搜索一下就能立即看懂并且写出自己想要的xml。可每当需要的时候就去查询,增加了各种重复的工作。本文针对这种情况,专门总结在android各种xml文件。由于layout的xml文件属性繁多,加上layout的xml广为熟知,本文不添加layout里面的xml总结。
在drawable中使用xml,大部分情况是为了定义图片,主要使用shape和selector标签。shape是定义一个形状,而selector主要是定义不同状态下的图片选择,比如按钮按下后更换背景等等。引用时,只需android:background=“@drawable/文件名”
shape使用规则如下:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle"|"oval"|"line"|"ring"] >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear"|"radial"|"sweep"]
android:useLevel=["true"|"false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size
android:width="integer"
android:height="integer" />
<solid
android:color="color" />
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer" />
shape>
selector的使用方法如下
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/p1" />
<item android:state_window_focused="false"
android:drawable="@drawable/p1" />
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/p2" />
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/p3" />
<item android:state_selected="true"
android:drawable="@drawable/p4" />
<item android:state_focused="true"
android:drawable="@drawable/p5" />
selector>
可以在item标签里面嵌套shape属性,这样的话item的android:drawable属性应去掉。
style文件定义了UI的格式和外观。style文件可以应用在单独的View(在layout文件中)或者应用在整个Activity和Application(在manifest文件)中。
注意:style只是一个简单的资源文件,它的取值为name属性对应的取值。因此,你可以在
标签里组合其他的style资源使用。
res/values/filename.xml
文件名可以随意,style元素的name属性作为ID使用
在XML文件中: @[package:]style/style_name
<resources>
<style name="style_name" parent="@[package:]style/style_to_inheri">
<item name="[package:] style_property_name" >style_valueitem>
style>
resources>
``必须且必须为根元素,没有属性.
定义一个样式。包含元素。
name : String类型,必须有该属性. name作为当前style的ID使用。在view和activity以及Application中会使用到这个ID。
parent: Style 资源类型. 引用某个Style,并且继承这个style。
定义一个Style的属性,必须为元素的子元素。
属性:
name:属性名称,必须有该属性。将要被定义的style属性名称,可能需要添加一个前缀(如android:textColor)。
style的XML文件(存放在res/values/):
<resources>
<style name="CustomText" parent="@style/Text">
<item name="android:textSize">20spitem>
<item name="android:textColor">#008item>
style>
resources>
style XML文件被用于TextView的Style(保存在res/layout/)
<EditText
style="@style/CustomText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello, World!" />
animation资源可以定义两种类型的动画之一。
通过修改对象的属性值来创建动画。
在Framework中,你可以选择两种类型的动画:
- 补间动画:通过针对一个图片执行一系列的变形来创建一个动画。
- 帧动画:通过顺序显示一系列图片来创建动画。
在xml文件定义的动画,通过修改对象的属性值,比如背景颜色或者透明度,并设置一段时间。
文件位置:
res/animator/filename.xml, 文件名将会作为资源ID
编译资源的数据类型:
资源指向ValueAnimator,ObjectAnimator或AnimatorSet
引用:
JAVA:R.animator.filename
XML:@[package:]animator/filename
语法:
<set
android:ordering=["together" | "sequentially"]>
<objectAnimator
android:propertyName="string"
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat"|"reverse"]
android:valueType=["intType"|"floatType"]/>
<animator
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat"|"reverse"]
android:valueType=["intType"|"floatType"]/>
<set>
...
set>
set>
文件中必须有一个根元素:要么
,
或你可以将一些
元素放入一个组里。
一个包含动画元素(``,``或其他``元素),代表一个AnimatorSet.
你可以指定嵌套的
,以进一步将动画组合在一起。每一个
可以定义他自己的ordering属性。
属性:
android:ordering
指定动画集中,该(set)动画的次序。
取值 | 描述 |
---|---|
sequentially | 按照动画集的顺序执行动画 |
together(默认) | 同时播放set所有动画 |
在一定时间后,指定的动画属性的值。代表一个ObjectAnimator对象。
属性:
android:propertyName
String型,必须。将对象属性用于动画,通过其name属性来引用。比如,你可以指定一个View对象的alpha或者backgroundColor.
由于objectAnimator元素没有target属性
,因此你在XML中无法设置用于动画的target。你必须inflate你的动画XML资源通过调用loadAnimator(),且调用setTarget()来设置包含这个属性的target对象
android:valueTo
float,int或color型,必须。动画属性的结束值。颜色通过十六进制数来表示。
android:valueFrom
float,int或color型.动画属性的开始值。如果不指定,动画开始时,值通过调用属性的get方法获取。
android:duration
int,动画执行的毫秒时间。默认300毫秒。
android:startOffset
int。调用start()后动画延迟执行的毫秒数
android:repeatCount
int.动画重复执行的次数。设置-1表示无穷次或者设置正整数。比如1表示开始运行动画后重复1次,因此,一共执行了2次。默认值是0,表示没有重复。
android:repeatMode
int.到动画结束时,应该做出什么行为。其中android:repeatCount必须设置为正整数这个属性才有效。设置reverse来使得动画反向或者设置repeat来设置动画循环从开始的地方执行。
android:valueType
关键字。如果值是颜色,请不要设置这个属性。动画的Framework会自动处理颜色值。
值 | 描述 |
---|---|
intType | 指定动画的值为int |
floatType(默认) | 指定动画的值为float |
文件存放在res/animator/propertyanimator.xml
<set android:ordering="sequentially">
<set>
<objectAnimator
android:propertyName="x"
android:duration="500"
android:valueTo="400"
android:valueType="intType"/>
<objectAnimator
android:propertyName="y"
android:duration="500"
android:valueTo="300"
android:valueType="intType"/>
set>
<objectAnimator
android:propertyName="alpha"
android:duration="500"
android:valueTo="1f"/>
set>
为了运行这个动画,你必须在代码中的AnimatoSet对象里inflate这个XML资源文件,在开始动画前对所有的动画设置target对象。可以方便地通过调用setTarget()为所有的AnimatorSet的子标签设置同一个target对象。示例如下:
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
R.anim.property_animator);
set.setTarget(myObject);
set.start();