Android资源文件中各种XML的作用与解释

众所周知,XML是一种可扩展标记语言,它被用来传输和存储数据。在Android中也会随处可见XML文件,包括一个android项目不可缺少的AndroidManifest.xml清单文件,res资源文件目录下的anim/drawable/layout/menu/values中等,目录截图如下。其中清单文件中内容最多最复杂,完全可以在其他文章中再来讲解,所以本文主要讲解res目录下的XML的作用与内容。

一、anim目录

anim目录下的xml主要是用于android中的动画,包括Frame animation(逐帧动画)与Tween animation(补间动画 )。

1.逐帧动画

逐帧动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似。可以理解成GIF,一帧一帧的显示图片。

代码:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
  <item android:drawable="@drawable/a_01" android:duration="50"/>
  <item android:drawable="@drawable/a_02" android:duration="50"/>
  <item android:drawable="@drawable/a_03" android:duration="50"/>
  <item android:drawable="@drawable/a_04" android:duration="50"/>
  <item android:drawable="@drawable/a_05" android:duration="50"/>
  <item android:drawable="@drawable/a_06" android:duration="50"/>
</animation-list>

<animation-list>元素是必须的,并且必须要作为根元素,可以包含一或多个元素;android:onshot如果定义为true的话,此动画只会执行一次,如果为false则一直循环;元素代表一帧动画, android:drawable指定此帧动画所对应的图片资源;android:druation代表此帧持续的时间,
整数,单位为毫秒。

2. 补间动画

补间动画包括旋转、 平移、缩放和透明度等效果。

代码:

① 旋转

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
  <!--fromDegrees:开始的角度
  toDegrees: 结束的角度, +表示是正的
  pivotX: 用于设置旋转时的x轴坐标 例 当值为"50",表示使用绝对位置定位 当值为"50%",表示使用相对于控件本身定位 当值为"50%p",表示使用相对于控件的父控件定位
  pivotY: 用于设置旋转时的y轴坐标 -->
  <rotate
    android:fromDegrees="0"
    android:toDegrees="+360"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="1000"/>
</set>


② 平移

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
    <!--
    始x轴坐标
    止x轴坐标
    始y轴坐标
    止y轴坐标缩放
    -->
    <translate
      android:fromXDelta="0%"
      android:toXDelta="100%"
      android:fromYDelta="0%"
      android:toYDelta="100%"
      android:duration="2000"/>
</set>

③ 缩放

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
    <!--
    起始x轴坐标
    止x轴坐标
    始y轴坐标
    止y轴坐标
    x轴的坐标
    y轴的坐标
    -->
    <scale
      android:fromXScale="1.0"
      android:toXScale="0.0"
      android:fromYScale="1.0"
      android:toYScale="0.0"
      android:pivotX="50%"
      android:pivotY="50%"
      android:duration="1000"/>
</set>

④ 透明度

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
    <!-- fromAlpha和toAlpha是起始透明度和结束时透明度 -->
    <alpha
      android:fromAlpha="1.0"
      android:toAlpha="0.0"
      android:startOffset="500"
      android:duration="500"/>
</set>

二、drawable目录

drawable目录主要是为了定义图片、按钮的背景及其点击状态。主要使用shape标签和selector标签。

1.shape标签

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>

2.selector标签

selector主要是定义不同状态按钮的背景等。

代码:

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 默认时的背景图片-->
    <item android:drawable="@drawable/a_01" />
    <!-- 没有焦点时的背景图片 -->
    <item android:state_window_focused="false"
          android:drawable="@drawable/a_01" />
    <!-- 非触摸模式下获得焦点并单击时的背景图片 -->
    <item android:state_focused="true"
          android:state_pressed="true"
          android:drawable="@drawable/a_02" />
    <!-- 触摸模式下单击时的背景图片-->
    <item android:state_focused="false"
          android:state_pressed="true"
          android:drawable="@drawable/a_03" />
    <!--选中时的图片背景-->
    <item android:state_selected="true"
          android:drawable="@drawable/a_04" />
    <!--获得焦点时的图片背景-->
    <item android:state_focused="true"
          android:drawable="@drawable/a_05" />
</selector>

三、layout目录

layout目录主要存放android的布局文件,包括android中的五大布局:LinearLayout(线性布局)、FrameLayout(帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。这里就不在做详细讲解,相信大家在使用时也没有太大问题。

四、menu目录

menu目录主要用来存放菜单的样式,包括点击手机底部的菜单键和顶部actionbar中设置的菜单按钮时的弹出框的菜单项。

代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/connect"
          android:orderInCategory="100"
          android:showAsAction="never"
          android:icon="@android:drawable/ic_menu_send"
          android:title="连接" />
    <item android:id="@+id/disconnect"
          android:orderInCategory="100"
          android:showAsAction="never"
          android:icon="@android:drawable/ic_menu_close_clear_cancel"
          android:title="断开" />
    <item android:id="@+id/search"
          android:orderInCategory="100"
          android:showAsAction="never"
          android:icon="@android:drawable/ic_menu_search"
          android:title="发现" />
    <item android:id="@+id/view"
          android:orderInCategory="100"
          android:showAsAction="never"
          android:icon="@android:drawable/ic_menu_view"
          android:title="查看" />
    <item android:id="@+id/help"
          android:orderInCategory="100"
          android:showAsAction="never"
          android:icon="@android:drawable/ic_menu_help"
          android:title="帮助" />
    <item android:id="@+id/exit"
          android:orderInCategory="100"
          android:showAsAction="never"
          android:icon="@android:drawable/ic_menu_revert"
          android:title="退出" />
</menu>  

效果:

五、values目录

values目录下的东西比较多,包括arrays.xml/colors.xml/dimens.xml/ids.xml/strings.xml/styles.xml,如下图所示:

1.arrays.xml

arrays.xml文件中用于放各种数组数据,比如字符串数组、整型数组等,数组中的数据可能是具体的值,也有可能是对资源数据的引用。

代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="select_items">
	    <item>one</item>
	    <item>two</item>
	    <item>three</item>
	    <item>four</item>
	</string-array>
</resources>

使用:

String[] items = getResources().getStringArray(R.array.select_items);

items数组中的数据就是arrays.xml文件中对应资源id R.array.selec_items中的数据。

2.colors.xml

colors.xml文件中主要用来说明需要的颜色值,也可以在res目录下另外新建一color文件夹用来存放这些xml文件

代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <color name="red">#ff00000</color>
     <color name="black">#000000</color>
     <color name="white">#ffffff</color>
</resources>

使用:

btn.setBackgroundColor(getResources().getColor(R.color.red));

3.dimens.xml

dimens.xml用来定义控件的尺寸和文字的大小,在其中定义是为了方便做屏幕适配。

代码:

 <resources>
    <!-- 控件的大小 -->
    <dimen name="title_width">200dp</dimen>
    <dimen name="title_height">50dp</dimen>

    <!-- 字体的大小 -->
    <dimen name="info_size">20sp</dimen>
    <dimen name="tip_size">16sp</dimen>
</resources>

使用:

<TextView
        android:layout_width="@dimen/title_width"
        android:layout_height="@dimen/title_height"
        android:textSize="@dimen/info_size"/>

4.ids.xml

ids.xml为应用的相关资源提供唯一的资源id。

代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="send" type="id"/>
    <item name="public" type="id"/>
</resources>

使用:

<TextView
        android:id="@id/send"
        android:layout_width="@dimen/title_width"
        android:layout_height="@dimen/title_height"
        android:textSize="@dimen/info_size"/>

5.strings.xml

Android建议将在屏幕上显示的文字定义在strings.xml中,而且这样做也可以做到国际化。

代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">TestDemo</string>
    <string name="action_add">添加</string>
    <string name="action_del">删除</string>
    <string name="action_settings">设置</string>
    <string name="action_about">关于</string>
    <string name="action_suggest">建议反馈</string>
</resources>

使用:

<TextView
        android:id="@id/send"
        android:layout_width="@dimen/title_width"
        android:layout_height="@dimen/title_height"
        android:textSize="@dimen/info_size"
        android:text="@string/action_add"/>

6.styles.xml

styles.xml主要用来存放android的主题与样式

代码:

<resources>
    <style name="myDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@color/transparent</item>
        <!-- 设置dialog背景 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 无标题 -->
        <item name="android:windowIsFloating">true</item>
    </style>
</resources>
时间: 2024-12-17 05:12:04

Android资源文件中各种XML的作用与解释的相关文章

【转】关于Android资源文件中出现百分号的问题

关于Android资源文件中出现百分号的问题 分类: Android JAVA2014-08-01 16:53 1345人阅读 评论(0) 收藏 举报 ANDROID格式化资源文件 目录(?)[+] 问题编辑strings.xml的时候 在行 [html] view plaincopy <string name="myurl">http://code.dd.com/rr?q=%rr.55</string> 或者 [html] view plaincopy <

关于Android资源文件中出现百分号的问题

编辑strings.xml的时候,提示 %编译不通过. <string name="url">http://aa.cc.com/dd?g=%rasdf</string> 或者 <string name="message_content'>这里是积分 %1s 积分,占比%2s %</string> 提示下面的错误 Multiple annotations found at this line: - error: Multiple

(转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别

原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法含义以及区别 一[email protected]代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@android:type/name android:textColor=&

Android xml资源文件中@、@android:type、@*、?、@+含义和区别

一[email protected]代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@android:type/name android:textColor="@android:color/opaque_red" 注意:其实@android:type/name是@[package:]type/name 的一个子类 二[email protected]*

ANDROID中获取STRING.XML,DIMENS.XML等资源文件中的值

一:是为了国际化,当需要国际化时,只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言(如,English),再运行程序时,android操作系统会根据用户手机的语言环境和国家来自动选择相应的string.xml文件,这时手机界面就会显示出英文.这样做国际化非常的方便. 二:为了减少应用的体积,降低数据的冗余.假设在应用中要使用”我们一直在努力”这段文字1000次,如果在每次使用时直接写上这几个字,这样下来程序中将有70000个字,这70000个字占136KB的空间.而由

Android layout文件中 &#39;?&#39; 的作用

在Android layout文件中,属性引用资源一般使用@,例如 android:textColor="@color/white" 但在一些系统文件中我们也可以看到有这样的写法 android:textColor="?android:color/textColor" 我们知道@是引用已经定义好的资源,如@color/white.@android:color/white,那 '?' 呢?下面是文档中的解释 Referencing style attributes A

struts2输入校验(附ActionName-validate.xml文件中正则表达式不起作用的解决方案),PS:有点问题希望知道的人指点下

PS:最后附上遇到的疑惑,希望知道的人指点下 前台页面(附代码): <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or

Android资源文件简介

Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源文件; -- 界面布局文件 : 在res/layout目录下定义, 用于定义Android中界面的显示样式; -- Java源码文件 : Android程序的逻辑实现, 程序主体; -- 资源文件 : 各种XML文件, 可以定义图片等资源, 以及各种图片, 音频, 视频, 3d模型等资源; (2)

Android资源文件之创建与访问

资料来源于官方api文档 Android资源文件之创建与访问 Android适配之创建别名资源 如果你想将某一资源用于多种设备配置(但是不想作为默认资源提供), 则无需将同一资源放入多个备用资源目录中.相反,可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名. 注: 并非所有资源都会提供相应的机制让你创建指向其他资源的别名.特别是, xml/目录中的动画资源.菜单资源.原始资源以及其他未指定的资源均不提供此功能. 例如,加入你有有一个应用图片icon.jpg, 并且需要不同区