Android中的资源是指非代码部分,如图片、音频、视频、字符等资源。一般我们都是在assets中保存原生的文件,如:MP3文件,Android程序不能直接访问,必须通过AssetManager类以二进制流的形式读取。布局类型文件一般都放在res文件夹下,如:anim,drawable,layout,values,xml,raw,menu等等,这些资源都可以通过R资源类直接访问。assets中的资源很少用到,res中的资源经常用到。
下面我们继续讲解如何使用这些典型布局类型文件:
四、使用原始XML资源:如果项目中使用到了一些原始的XML文件,那么我们可以定义一些XML文件供工程使用。
1)字符串的定义和使用:
资源位置:res/xml/test.xml
原始XML文件格式:
<?xml version="1.0" endocing="utf-8">
<resources>
<someElement name1=value1name2=value2 ...></string>
</resources>
获得XML资源方法:Resources.getXml()
引用XML资源方式:Java代码中:R.xml.xml_name
案例: 获得原始XML文件的基本思路是:通过Resources.getXml()获得XML原始文件,得到XmlResourcePaser对象,通过该对象来判断是文档的开始还是结尾、是某个标签的开始还是结尾,并通过获得属性的方法来遍历XMl文件,从而访问MXL文件的内容。
xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<person name="xiaomo" age="23" gender="male"></person>
</resources>
java中核心代码:
Resources r = getResources();
XmlResourceParser xrp = r.getXml(R.xml.person);
try{
//如果没有到文件尾继续循环
while(xrp.getEventType() != XmlResourceParser.END_DOCUMENT){
//如果是开始标签
if(xrp.getEventType() == XmlResourceParser.START_TAG){
String name = xrp.getName();
//判断标签名是否等于person
if(name.equals("person")){
counter++;
//获得标签属性追加到StringBuilder中
sb.append("第"+counter+"条用户信息:\n");
sb.append("name:"+xrp.getAttributeValue(0)+"\n");
sb.append("age:"+xrp.getAttributeValue(1)+"\n");
sb.append("gender:"+xrp.getAttributeValue(2)+"\n\n");
}
}else if(xrp.getEventType() == XmlPullParser.END_TAG){
}else if(xrp.getEventType() == XmlPullParser.TEXT){
}
xrp.next();
}
//将StringBuilder设置为TextView的文本
myTextView.setText(sb.toString());
myButton.setText("退出");
}catch(XmlPullParserException e){
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
五、使用drawables资源:一些图片或者颜色资源,主要用来绘制屏幕,分为三类:Bitmap File(位图文件)、Color Drawable (颜色)、NIne-Patch Image(九片图片)。
1)drawable资源的定义和使用:
资源位置:res/drawable/file_name.jpg/file_name.png/file_name.gif
获得字符串方法:Resources.getDrawable()
引用资源方式:Java代码中:R.drawable.file_name
字符串XML文件中:@[package:]drawable/file_name
案例:
myImageView = (ImageView)findViewById(R.id.mypic);
Resources r = getResources();
Drawable d = r.getDrawable(R.drawable.moto);
myImageView.setImageDrawable(d);
六、使用布局(layout)资源:布局资源是Android中最常用的一种资源,Android可以将屏幕中组件的布局方式定义在一个XML文件中,这有点像Web开发中的HTML页面,通过Activity.setContentView()方法将布局文件展示在Activity上。Android通过LayoutInflater类将XML文件中的组件解析为可视化的视图组件。
1)布局文件的定义和使用:
资源位置:res/layout/my_layout.xml(任意名称)
布局XML文件格式:
<?xml version="1.0" endocing="utf-8">
<布局类 xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/stirng_name" (属性)>
<视图组件或者其他嵌套布局类>
</布局类>
获得XML资源的方法:Activity.setContentView()
引用资源方式:Java代码中:R.layout.my_layout
字符串XML文件中:@[package:]layout/my_layout
案例:布局文件main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/dimen_text"
android:layout_width="fill_parent"
android:layout_height="@dimen/text_height"
android:textColor="@color/white"
android:background="@color/blue"
android:text="@string/hello_world" />
</RelativeLayout>
java核心代码:
setContentView(R.layout.main);
出处:http://blog.csdn.net/cl05300629/article/details/17716895 作者:伫望碧落