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

常见res目录

anim目录

anim用于存放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>

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标签。

  • 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>
  • 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的布局文件。

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目录下的东西比较多, 如图所示:


values目录
  • 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.select_items中的数据。

  • colos.xml
    colors.xml文件中主要用来说明需要的颜色值,也可以在res目录下另外新建一color文件夹用来存放这些文件。
<?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));
  • 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"/>
  • 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"/>
  • 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"/>
  • 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>

参考链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,659评论 4 61
  • 他们走着走着,夏塔发现前面一个又大又深的大洞,夏塔说:“我们被困在这里了!怎么办呢?”这时,小明说:“也许我们可...
    王浩然666阅读 260评论 0 0
  • 接着写哈,小宝宝刚生下来太细嫩、娇弱和无助了,母爱是上天赋予的本能,这个本能提供了婴孩最基本的保证,让Ta有...
    Luara欧阳阅读 494评论 4 1
  • 最近面膜不合格事件频发,很多美丽伽人对如何选择安全的面膜一头雾水,这时候,自制面膜就派上用场。 黄瓜面膜:黄瓜不...
    依素周周阅读 377评论 0 0
  • 18号 感恩云阳马拉松主办方,送出龙岗免费门票,一早跟云姐收拾出门,感恩滴滴让我们这路痴出门不担心迷路耽搁时间,一...
    冬梅123阅读 295评论 0 0

友情链接更多精彩内容