Android中的各种XML

在android中,有很多xml配置文件,其中,大家最熟悉的就是layout里面的xml文件。但是,在其他文件夹中,也有很多xml文件,针对某个xml或许搜索一下就能立即看懂并且写出自己想要的xml。可每当需要的时候就去查询,增加了各种重复的工作。本文针对这种情况,专门总结在android各种xml文件。由于layout的xml文件属性繁多,加上layout的xml广为熟知,本文不添加layout里面的xml总结。

1、Drawable

在drawable中使用xml,大部分情况是为了定义图片,主要使用shape和selector标签。shape是定义一个形状,而selector主要是定义不同状态下的图片选择,比如按钮按下后更换背景等等。引用时,只需android:background=“@drawable/文件名”
shape使用规则如下:

<?xml version="1.0" encoding="utf-8"?>  <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的使用方法如下

<?xml version="1.0" encoding="utf-8" ?>   <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属性应去掉。

2、Style

style文件定义了UI的格式和外观。style文件可以应用在单独的View(在layout文件中)或者应用在整个Activity和Application(在manifest文件)中。

注意:style只是一个简单的资源文件,它的取值为name属性对应的取值。因此,你可以在<resources>标签里组合其他的style资源使用

文件位置:

res/values/filename.xml文件名可以随意,style元素的name属性作为ID使用  

文件名引用:

在XML文件中: @[package:]style/style_name

语法:

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="style_name" parent="@[package:]style/style_to_inheri"> <item name="[package:] style_property_name" >style_value</item> </style></resources>

元素

`<resources>`必须且必须为根元素,没有属性.

<style> 定义一个样式。包含元素。

属性:

name : String类型,必须有该属性. name作为当前style的ID使用。在view和activity以及Application中会使用到这个ID。
parent: Style 资源类型. 引用某个Style,并且继承这个style。
<item> 定义一个Style的属性,必须为<style>元素的子元素。
属性:
name:属性名称,必须有该属性。将要被定义的style属性名称,可能需要添加一个前缀(如android:textColor)。

例子:

style的XML文件(存放在res/values/):

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="CustomText" parent="@style/Text"> <item name="android:textSize">20sp</item> <item name="android:textColor">#008</item> </style></resources>

style XML文件被用于TextView的Style(保存在res/layout/)

<?xml version="1.0" encoding="utf-8"?> <EditText  style="@style/CustomText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello, World!" />

3、Animation

animation资源可以定义两种类型的动画之一。

属性动画:

通过修改对象的属性值来创建动画。

视图动画

在Framework中,你可以选择两种类型的动画:

  1. 补间动画:通过针对一个图片执行一系列的变形来创建一个动画。
  2. 帧动画:通过顺序显示一系列图片来创建动画。

属性动画

在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>

文件中必须有一个根元素:要么<set>,<objectAnimator>或你可以将一些<set>元素放入一个组里。

元素:

<set>

一个包含动画元素(`<objectAnimator>`,`<valueAnimator>`或其他`<set>`元素),代表一个AnimatorSet.

你可以指定嵌套的<set>,以进一步将动画组合在一起。每一个<set>可以定义他自己的ordering属性。
属性:
android:ordering
指定动画集中,该(set)动画的次序。

取值 描述
sequentially 按照动画集的顺序执行动画
together(默认) 同时播放set所有动画

<objectAnimator>

在一定时间后,指定的动画属性的值。代表一个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();

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 瘸腿蛤蟆笔记cocos2d-x-3.2移植到到android步骤及问题定位
  4. 普通android工程转换为C/C++工程之后,再还原成android工程的解决
  5. Android中可以做的两件坏事---破解锁屏密码和获取Wifi密码
  6. 【Unity3d】Unity5与Android交互通信(使用Android(安卓)Studio2.4
  7. 【移动开发】Android中Theme和Style的使用
  8. Android(安卓)简单快捷高效的屏幕适配
  9. Android(安卓)主题之安装的APK主题文件

随机推荐

  1. 如何实现手势缩放图片
  2. Android:Native C源码(NDK)如何使用sqlit
  3. AndroidX
  4. Scroll,
  5. Android应用程序执行流程
  6. android关于EditText取消默认焦点及触摸
  7. 【Android】TextView动态设置android:dra
  8. Android ROM研究---Android build system
  9. 用native driver 对android 程序进行自动
  10. Android(安卓)多 Fragment 切换优化