XML文件在Android中的重要作用(从文件存放形式剖析)

XML文件的存放与作用

一、XML——resource文件(res\values\),以resource为根节点 

  1.strings.xml  定义字符串的文件,格式如下:  

  
    Hello World! 
    总结很辛苦的~ 
 

  2.colors.xml  定义颜色的文件,格式如下:  

 
     
    #FF0000 
    #E00000 
    #000000 
     
    #FF0000 
    #0000FF 
    #00FF00 
    #FFFF00 
 

PS: 以下参考互联网资源

 #为16进制标识

    00      00     00
 红色 绿色 蓝色  三基色可 组任意颜色

000000=黑色 
FFFFFF=白色
FF0000=红色
00FF00=绿色
0000FF=蓝色
    #FF0000   
    #0000FF   
    #00FF00   
    #FFFF00  

    

< color name="white">#FFFFFF< /color>< !--白色 -->
< color name="ivory">#FFFFF0< /color>< !--象牙色 -->
< color name="lightyellow">#FFFFE0< /color>< !--亮黄色 -->
< color name="yellow">#FFFF00< /color>< !--黄色 -->
< color name="snow">#FFFAFA< /color>< !--雪白色 -->
< color name="floralwhite">#FFFAF0< /color>< !--花白色 -->
< color name="lemonchiffon">#FFFACD< /color>< !--柠檬绸色 -->
< color name="cornsilk">#FFF8DC< /color>< !--米绸色 -->
< color name="seashell">#FFF5EE< /color>< !--海贝色 -->
< color name="lavenderblush">#FFF0F5< /color>< !--淡紫红 -->
< color name="papayawhip">#FFEFD5< /color>< !--番木色 -->
< color name="blanchedalmond">#FFEBCD< /color>< !--白杏色 -->
< color name="mistyrose">#FFE4E1< /color>< !--浅玫瑰色 -->
< color name="bisque">#FFE4C4< /color>< !--桔黄色 -->
< color name="moccasin">#FFE4B5< /color>< !--鹿皮色 -->
< color name="navajowhite">#FFDEAD< /color>< !--纳瓦白 -->
< color name="peachpuff">#FFDAB9< /color>< !--桃色 -->
< color name="gold">#FFD700< /color>< !--金色 -->
< color name="pink">#FFC0CB< /color>< !--粉红色 -->
< color name="lightpink">#FFB6C1< /color>< !--亮粉红色 -->
< color name="orange">#FFA500< /color>< !--橙色 -->
< color name="lightsalmon">#FFA07A< /color>< !--亮肉色 -->
< color name="darkorange">#FF8C00< /color>< !--暗桔黄色 -->
< color name="coral">#FF7F50< /color>< !--珊瑚色 -->
< color name="hotpink">#FF69B4< /color>< !--热粉红色 -->
< color name="tomato">#FF6347< /color>< !--西红柿色 -->
< color name="orangered">#FF4500< /color>< !--红橙色 -->
< color name="deeppink">#FF1493< /color>< !--深粉红色 -->
< color name="fuchsia">#FF00FF< /color>< !--紫红色 -->
< color name="magenta">#FF00FF< /color>< !--红紫色 -->
< color name="red">#FF0000< /color>< !--红色 -->
< color name="oldlace">#FDF5E6< /color>< !--老花色 -->
< color name="lightgoldenrodyellow">#FAFAD2< /color>< !--亮金黄色 -->
< color name="linen">#FAF0E6< /color>< !--亚麻色 -->
< color name="antiquewhite">#FAEBD7< /color>< !--古董白 -->
< color name="salmon">#FA8072< /color>< !--鲜肉色 -->
< color name="ghostwhite">#F8F8FF< /color>< !--幽灵白 -->
< color name="mintcream">#F5FFFA< /color>< !--薄荷色 -->
< color name="whitesmoke">#F5F5F5< /color>< !--烟白色 -->
< color name="beige">#F5F5DC< /color>< !--米色 -->
< color name="wheat">#F5DEB3< /color>< !--浅黄色 -->
< color name="sandybrown">#F4A460< /color>< !--沙褐色 -->
< color name="azure">#F0FFFF< /color>< !--天蓝色 -->
< color name="honeydew">#F0FFF0< /color>< !--蜜色 -->
< color name="aliceblue">#F0F8FF< /color>< !--艾利斯兰 -->
< color name="khaki">#F0E68C< /color>< !--黄褐色 -->
< color name="lightcoral">#F08080< /color>< !--亮珊瑚色 -->
< color name="palegoldenrod">#EEE8AA< /color>< !--苍麒麟色 -->
< color name="violet">#EE82EE< /color>< !--紫罗兰色 -->
< color name="darksalmon">#E9967A< /color>< !--暗肉色 -->
< color name="lavender">#E6E6FA< /color>< !--淡紫色 -->
< color name="lightcyan">#E0FFFF< /color>< !--亮青色 -->
< color name="burlywood">#DEB887< /color>< !--实木色 -->
< color name="plum">#DDA0DD< /color>< !--洋李色 -->
< color name="gainsboro">#DCDCDC< /color>< !--淡灰色 -->
< color name="crimson">#DC143C< /color>< !--暗深红色 -->
< color name="palevioletred">#DB7093< /color>< !--苍紫罗兰色-->
< color name="goldenrod">#DAA520< /color>< !--金麒麟色 -->
< color name="orchid">#DA70D6< /color>< !--淡紫色 -->
< color name="thistle">#D8BFD8< /color>< !--蓟色 -->
< color name="lightgray">#D3D3D3< /color>< !--亮灰色 -->
< color name="lightgrey">#D3D3D3< /color>< !--亮灰色 -->
< color name="tan">#D2B48C< /color>< !--茶色 -->
< color name="chocolate">#D2691E< /color>< !--巧可力色 -->
< color name="peru">#CD853F< /color>< !--秘鲁色 -->
< color name="indianred">#CD5C5C< /color>< !--印第安红 -->
< color name="mediumvioletred">#C71585< /color>< !--中紫罗兰色 -->
< color name="silver">#C0C0C0< /color>< !--银色 -->
< color name="darkkhaki">#BDB76B< /color>< !--暗黄褐色
< color name="rosybrown">#BC8F8F< /color>< !--褐玫瑰红 -->
< color name="mediumorchid">#BA55D3< /color>< !--中粉紫色 -->
< color name="darkgoldenrod">#B8860B< /color>< !--暗金黄色 -->
< color name="firebrick">#B22222< /color>< !--火砖色 -->
< color name="powderblue">#B0E0E6< /color>< !--粉蓝色 -->
< color name="lightsteelblue">#B0C4DE< /color>< !--亮钢兰色-->
< color name="paleturquoise">#AFEEEE< /color>< !--苍宝石绿 -->
< color name="greenyellow">#ADFF2F< /color>< !--黄绿色 -->
< color name="lightblue">#ADD8E6< /color>< !--亮蓝色 -->
< color name="darkgray">#A9A9A9< /color>< !--暗灰色 -->
< color name="darkgrey">#A9A9A9< /color>< !--暗灰色 -->
< color name="brown">#A52A2A< /color>< !--褐色 -->
< color name="sienna">#A0522D< /color>< !--赭色 -->
< color name="darkorchid">#9932CC< /color>< !--暗紫色 -->
< color name="palegreen">#98FB98< /color>< !--苍绿色 -->
< color name="darkviolet">#9400D3< /color>< !--暗紫罗兰色 -->
< color name="mediumpurple">#9370DB< /color>< !--中紫色 -->
< color name="lightgreen">#90EE90< /color>< !--亮绿色 -->
< color name="darkseagreen">#8FBC8F< /color>< !--暗海兰色 -->
< color name="saddlebrown">#8B4513< /color>< !--重褐色 -->
< color name="darkmagenta">#8B008B< /color>< !--暗洋红 -->
< color name="darkred">#8B0000< /color>< !--暗红色 -->
< color name="blueviolet">#8A2BE2< /color>< !--紫罗兰蓝色
< color name="lightskyblue">#87CEFA< /color>< !--亮天蓝色 -->
< color name="skyblue">#87CEEB< /color>< !--天蓝色 -->
< color name="gray">#808080< /color>< !--灰色 -->
< color name="grey">#808080< /color>< !--灰色 -->
< color name="olive">#808000< /color>< !--橄榄色 -->
< color name="purple">#800080< /color>< !--紫色 -->
< color name="maroon">#800000< /color>< !--粟色 -->
< color name="aquamarine">#7FFFD4< /color>< !--碧绿色 -->
< color name="chartreuse">#7FFF00< /color>< !--黄绿色 -->
< color name="lawngreen">#7CFC00< /color>< !--草绿色 -->
< color name="mediumslateblue">#7B68EE< /color>< !--中暗蓝色-->
< color name="lightslategray">#778899< /color>< !--亮蓝灰 -->
< color name="lightslategrey">#778899< /color>< !--亮蓝灰 -->
< color name="slategray">#708090< /color>< !--灰石色 -->
< color name="slategrey">#708090< /color>< !--灰石色 -->
< color name="olivedrab">#6B8E23< /color>< !--深绿褐色 -->
< color name="slateblue">#6A5ACD< /color>< !--石蓝色 -->
< color name="dimgray">#696969< /color>< !--暗灰色 -->
< color name="dimgrey">#696969< /color>< !--暗灰色 -->
< color name="mediumaquamarine">#66CDAA< /color>< !--中绿色-->
< color name="cornflowerblue">#6495ED< /color>< !--菊兰色 -->
< color name="cadetblue">#5F9EA0< /color>< !--军兰色 -->
< color name="darkolivegreen">#556B2F< /color>< !--暗橄榄绿
< color name="indigo">#4B0082< /color>< !--靛青色 -->
< color name="mediumturquoise">#48D1CC< /color>< !--中绿宝石-->
< color name="darkslateblue">#483D8B< /color>< !--暗灰蓝色 -->
< color name="steelblue">#4682B4< /color>< !--钢兰色 -->
< color name="royalblue">#4169E1< /color>< !--皇家蓝 -->
< color name="turquoise">#40E0D0< /color>< !--青绿色 -->
< color name="mediumseagreen">#3CB371< /color>< !--中海蓝 -->
< color name="limegreen">#32CD32< /color>< !--橙绿色 -->
< color name="darkslategray">#2F4F4F< /color>< !--暗瓦灰色 -->
< color name="darkslategrey">#2F4F4F< /color>< !--暗瓦灰色 -->
< color name="seagreen">#2E8B57< /color>< !--海绿色 -->
< color name="forestgreen">#228B22< /color>< !--森林绿 -->
< color name="lightseagreen">#20B2AA< /color>< !--亮海蓝色 -->
< color name="dodgerblue">#1E90FF< /color>< !--闪兰色 -->
< color name="midnightblue">#191970< /color>< !--中灰兰色 -->
< color name="aqua">#00FFFF< /color>< !--浅绿色 -->
< color name="cyan">#00FFFF< /color>< !--青色 -->
< color name="springgreen">#00FF7F< /color>< !--春绿色 -->
< color name="lime">#00FF00< /color>< !--酸橙色 -->
< color name="mediumspringgreen">#00FA9A< /color>< !--中春绿色 -->
< color name="darkturquoise">#00CED1< /color>< !--暗宝石绿 -->
< color name="deepskyblue">#00BFFF< /color>< !--深天蓝色 -->
< color name="darkcyan">#008B8B< /color>< !--暗青色 -->
< color name="teal">#008080< /color>< !--水鸭色 -->
< color name="green">#008000< /color>< !--绿色 -->
< color name="darkgreen">#006400< /color>< !--暗绿色 -->
< color name="blue">#0000FF< /color>< !--蓝色 -->
< color name="mediumblue">#0000CD< /color>< !--中兰色 -->
< color name="darkblue">#00008B< /color>< !--暗蓝色 -->
< color name="navy">#000080< /color>< !--海军色 -->
< color name="black">#000000< /color>< !--黑色 -->

   

  3.arrays.xml  定义数组    

 
     
        Mercury 
        Venus 
        Earth 
        Mars 
        Jupiter 
        Saturn 
        Uranus 
        Neptune 
        Pluto 
     

     
        100 
        500 
        800  
     
 

  4.styles.xml  定义样式(风格/主题 )
       

     Theme和Style只是应用范围不同  

  •    Style:控制其他XML(控件)中的元素格式。 如定义一个Style(*.xml)文件,设置文本字号、大小、颜色, 然后在TextView中指定引用。  

 
     
        @drawable/stylogo120dpi 
        wrap_content 
        wrap_content 
     
     

  •          Theme:控制一个或者多个Activity主题。 如定义一个Theme(*.xml)文件,设置window frame和panel 的前景/背景属性设置颜色或图片资源、为菜单定义文字大小/颜色,然后在全部(也可以是指定)的Activity应用。  

  
    
        true 
        @android:style/Animation.Translucent 
        @drawable/transparent_background 
        true 
        #fff 
       

  •          延伸— 主题

(1)主题应用

整个工程应用主题,在AndroidManifest.xml的application 标签中定义:    

activety中用主题(两种方式)

                  1)在AndroidManifest.xml的activity标签中定义:

                   2)在onCreate()调用之前被调用setTheme()函数:setTheme(R.style.Theme_MyDoFirst );

 

(2)themes.xml

系统预定义了一些默认的主题存储于自带的themes.xml中,可以直接引用

              

@:系统已经定义                    style/:表示引用主题/样式

 android:theme="@android:style/Theme.Dialog"                                                 Activity显示为对话框模式
 android:theme="@android:style/Theme.NoTitleBar"                                          不显示应用程序标题栏
 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"                      不显示应用程序标题栏、并全屏
 android:theme="@android:style/Theme.Light"                                                     白色背景
 android:theme="@android:style/Theme.Light.NoTitleBar"                                 白色背景、无标题栏
 android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"             白色背景、无标题栏,全屏
 android:theme="@android:style/Theme.Black"                                                     黑色背景
 android:theme="@android:style/Theme.Black.NoTitleBar"                                 黑色背景、无标题栏
 android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"             黑色背景、无标题栏、全屏
 android:theme="@android:style/Theme.Wallpaper"                                           系统桌面为应用程序背景
 android:theme="@android:style/Theme.Wallpaper.NoTitleBar"                       系统桌面为应用程序背景、无标题栏
 android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"  系统桌面为应用程序背景、无标题栏、全屏
 android:theme="@android:style/Theme.Translucent"                                            透明背景
 android:theme="@android:style/Theme.Translucent.NoTitleBar"                        透明背景、无标题栏
 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"    透明背景、无标题栏、全屏
 android:theme="@android:style/Theme.Panel"                                                   面板风格显示
 android:theme="@android:style/Theme.Light.Panel"                                         平板风格显示

(3)主题中的一些常见内容与含义

status_area_font_color功能表右上端时间和数字=“0x3333ff”
softkey_font_color功能表下端功能键=“0x999999”
calendar_highlight_color日历光标背色和标记文字背色=“0x999999”
idle_font_color待机文字=“0x777777”
idle_status_area_font_color中国移动=“0x999999”
idle_softkey_area_font_color待机下端功能键=“0x999999”active_idle_active_font_color进入待机功能状态文字=“0xffffff”
menu_font_color菜单名字、操作文字=“0xffffff”
menu_highlight_font_color菜单、操作光标文字和日历光标数字=“0x3333ff”
grid_menu_font_color功能表图标下名字=“0xffffff”
grid_menu_highlight_font_color功能表图标光标下名字=“0x3333ff”
grid_highlight_color=“0xffffff”
forms_selected_font_color标记的文字和编辑文字时的文字=“0xffffff”
forms_unselected_font_color退出文字编辑后的文字=“0xcccccc”
forms_selected_color=“0xffffff”
forms_unselected_color=“0x0”

 

     5.dimen.xml  定义单位

          android度量单位:      

               px(象素):      屏幕实际象素, 分辨率1024*768pixels即X方向1024px, Y方向768px,可使不同设备的显示效果相同。 
    in(英寸):     屏幕物理尺寸, 每英寸等于2.54厘米。  
    mm(毫米): 屏幕物理尺寸。 
    pt(点) :        屏幕的物理尺寸。1/72英寸。  
    dp/dip :      与密度无关的象素,基于屏幕密度的抽象单位。在每英寸160点的显示器上1dp = 1px,但不同设备的屏幕密度中dp和px的比例会改变。  
    sp :             与刻度无关的象素,主要用于字体显示best for textsize,用于文字单位。  

  
    1px  
    2dp  
    16sp  
     

  6.attrs.xml  定义属性的,主要用在自定义的组件

      
          
              
              
          
   

二、XML——布局文件

       layout目录下,使用广泛。可预定义一套或多套布局,如定义layout_land(手机横屏布局)、layout_port(竖屏布局)两套xml,系统可在运行时根据情况引用布局文件。

      PS:同一界面的布局文件名相同,但要在不同目录下。 

三、XML——图片文件

      1.  drawable目录下,2.1版本后为三个目录以兼容不同平台不同屏幕(建议存放不同版本图片), 系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。

drawable-hdpi存放高分辨率图片,如WVGA (480×800),FWVGA (480×854) 
drawable-mdpi存放中等分辨率图片,如HVGA (320×480) 
drawable-ldpi存放低分辨率图片,如QVGA (240×320)          

     2.  drawable/shapge_1.xml 内容如下: 

  
 
    android:startColor="#0055ff88"  
    android:centerColor="#0055ff00"  
    android:centerY="0.75"  
    android:endColor="#00320077"  
    android:angle="270"  
/>  
 
  
 
    android:width="2dp" 
    android:color="#ee31ff5e"  
    android:dashWidth="3dp"  
    android:dashGap="2dp" />  
 
    android:left="7dp" 
    android:top="7dp" 
    android:right="7dp"  
    android:bottom="7dp" />  
 
  
 
  

      3.  控件根据状态显示不同图片,可以在程序中控制,也可利用drawable目录中的XML文件实现。

  • 根据控件(如button)的正常、获取焦点、按下按钮等不同事件状态定义效果

新建文件drawable\button_back.xml 

 
 
     
     
     
    <-- 可加更多效果/动作--> 
     
 

在其他xml中引用

       android:id="@+id/Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/button_add_x"> 
 
 

  • 控件无预设事件类型时

(1)java代码中根据条件引用

//ImageView根据变量var的值显示不同的图片

view plaincopyprint?if (条件1)   
{   
image.setBackground(R.id.xxx1);   
}   
else if (条件2)   
{   
image.setBackground(R.id.xxx2);   
} ...    

(2)建立res/drawable/*.xml文件

 
     
     
     
     
     
 

在layout中把imageview的src设置成已创建好的xml文件 。程序中变换图片时利用 imageview.getDrawable().setLevel(50);  指定对应的图片。

PS:手机显示剩余电量图片原理同上

四、XML——菜单文件

        menu目录下,onCreateOptionsMenu方法中用MenuInflater装载

 
             android:title="Enabled" 
        android:icon="@drawable/stat_happy" /> 

             android:title="Disabled" 
        android:enabled="false" 
        android:icon="@drawable/stat_sad" /> 

             android:title="Enabled" 
        android:icon="@drawable/stat_happy" /> 

             android:title="Disabled" 
        android:enabled="false" 
        android:icon="@drawable/stat_sad" /> 
 

五、XML——动画文件  anim目录下,动画资源分为两种

  1.实现图片的translate、scale、rotate、alpha四种变化,还可以设置动画的播放特性,称为Tween动画。

                
              android:fromXDelta="0" android:toXDelta="200" android:fromYDelta="0" 
         android:toYDelta="180" android:duration="2000" /> 
              android:fromXScale="1.0" android:toXScale="2.0" android:fromYScale="1.0" 
         android:toYScale="2.0" android:pivotX="150%" android:pivotY="150%" 
         android:duration="2000" /> 
              android:duration="@android:integer/config_mediumAnimTime" /> 
     
    可以使用其子类和属性定义动画的运行方式,先快后慢,先慢后快等 
 

  2.帧动画,逐帧播放设置的资源,称为Frame动画。 

android:oneshot=”true”>  
      
      
      
 

六、XML——直接复制文件

        raw目录下,可直接复制到设备中的资源文件。无需编译,添加到应用程序编译产生的压缩文件中,常为音频或视频等资源。

        可调用Resources.openRawResource(),参数为资源的ID(R.raw.somefilename)。 

七、XML——普通xml文件

        xml目录下,程序所需的xml文件。

       运行时可以通过调用Resources.getXML()读取。 

八、XML——  原始格式文件     

        assets目录下,保持文件的原始格式。

        用AssetManager以字节流的形式读取。 

  1.   在Activity中调用getAssets()获取AssetManager引用。 
  2.   用AssetManager的open(String fileName, int accessMode)方法,指定读取的文件以及访问模式,得到输入流InputStream。 
  3.   用inputStream读取(文件Open成功时),用inputStream.close()关闭保存状态。 
  4.   用AssetManager.close()关闭AssetManager。

 

你可能感兴趣的:(Android初学)