一.android中的资源是在代码中使用的外部文件。图片,音频,动画和字符串等叫做android中的资源文件。
二.Android工程 资源类型布局表
与src源文件夹并列的两个文件夹assets和res用来保存资源文件。
1.assets文件夹中放原声文件如MP3文件,通过AssetManager类以二进制流的形式访问
2.res中资源可以通过R资源类直接访问:
anim:保存动画
drawable:位图文件
layout:xml布局文件
values:各种xml资源文件
arrays.xml:xml数组文件
colors.xml:xml颜色文件
dimens.xml:xml尺寸文件
styles.xml:xml样式文件
raw:直接复制到设备中的源文件
menu:xml菜单文件

使用mContext.getResources()得到Resources对象来获取资源

XML的写法如下:

代码
                            一个android工程中,有各种类型的资源文件,大致可以分为以下几种:

1、 颜色 #RGB #ARGB #RRGGBB #AARRGGBB

颜色资源应该位于
< resourses ></ resourses > 标签下

路径res/values/colors.xml 名字可以随意

定义
< color name =”cname”>value</color>

使用 Resourse.getValues.getColor

<?xml version
="1.0" encoding ="utf-8" ? >

< resources >

< color name ="white" > #FFFFFF </ color >

< color name ="black" > #000000 </ color >

</ resources >

2、 字串

字串资源应该位于
< resourses ></ resourses > 标签下

路径res/values/strings.xml

定义
< String name =”sname”>value</String>

使用 Resourse.getValues.getString

<?xml version
="1.0" encoding ="utf-8" ? >

< resources >

< string name ="hello" > Hello World, ResrouseTestActivity! </ string >

< string name ="app_name" > ResrouseTest </ string >

</ resources >



3、 图片

图片资源一般使用png格式,使用其他格式的会出现各种问题,貌似不支持gif格式的图片,可是使用Movie来播放gif格式的图片

路径res/drawable

可以直接存放图片也可以是xml等配置文件(一般用于自定义组件)

使用 getDrawable



4、 图片的颜色

位于res/values/my_drawable.xml名字随意

<? xml version="1.0" encoding="utf-8" ?>

< resources >

< drawable name ="solid_red" > #FF0000 </ drawable >

</ resources >

定义用于填充一个组件的颜色值,即给view设置背景色。用法和drawable下的图片一样,其实没多少意义,使用颜色定义就ok了,目前我是这样认为的,可能有更好的优点,不过我没发现罢了,嘿嘿,continue...

5、 单位资源

单位资源应该位于
< resourses ></ resourses > 标签下

路径res/values/dimen.xml 名字可以随意

使用和String、color类似

<? xml version="1.0" encoding="utf-8" ?>

< resources >

< dimen name ="dimen_name" > 2px </ dimen >

< dimen name ="dimen_px" > 5px </ dimen >

< dimen name ="dimen_pt" > 3pt </ dimen >

< dimen name ="dimen_dp" > 3dp </ dimen >

</ resources >

6、 Nine-patch(可以拉伸的小图片)

支持图片的拉伸

貌似就是所谓的png图片文件资源,图片在应用view的背景时,如果被设为background则会随view的大小变化做相应的拉伸和收缩,像ImageView这类设置src图片则不随view变化,按其自身大小显示部分或全部!

7、 菜单

菜单即可以从代码中实现也可以在资源文件中配置,这里就是要描述一下第二种
<? xml version="1.0" encoding="utf-8" ?> < menu xmlns:android ="http://schemas.android.com/apk/res/android" > < item android:id ="@+id/previous" android:title ="@string/previous" android:enabled ="false" android:icon ="@android:drawable/ic_media_previous" /> < item android:id ="@+id/play_pause" android:title ="@string/play" android:icon ="@android:drawable/ic_media_play" /> < item android:id ="@+id/next" android:title ="@string/next" android:icon ="@android:drawable/ic_menu_next" /></ menu > 8、 Layout布局

这个就是你经常看到的与用户交互的界面的xml文件,就是各个view的排列和嵌套,没什么好说的啦

9、 风格和主题、

风格主要是指view的显示风格 res/values/filename.xml

<? xml version=”1.0″ encoding=”utf-8″ ?>
< resources >
< style name =”SpecialText” parent =”@style/Text”>
<item name =”android:textSize”>18sp</item>
<item name =”android:textColor”>#008</item>
</style >
</ resources >

主题主要针对Activity等, 可以在Android Manifest中定义的
< application > < activity > 元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View里.风格可以自己定义也可以使用程序自带的或是继承已有的风格。

<? xml version="1.0" encoding="utf-8" ?> < resources >< style name ="CustomTheme" >< item name ="android:windowNoTitle" > true </ item >< item name ="windowFrame" > @drawable/screen_frame </ item >< item name ="windowBackground" > @drawable/screen_background_white </ item >< item name ="panelForegroundColor" > #FF000000 </ item >< item name ="panelBackgroundColor" > #FFFFFFFF </ item >< item name ="panelTextColor" > ?panelForegroundColor </ item >< item name ="panelTextSize" > 14 </ item >< item name ="menuItemTextColor" > ?panelTextColor </ item >< item name ="menuItemTextSize" > ?panelTextSize </ item ></ style ></ resources >

10、 动画

动画资源分为两种,一是实现图片的translate、scale、rotate、alpha四种变化。还可以设置动画的播放特性;另一种是帧动画,逐帧播放设置的资源

先说一下第一种

Res/anim/filename.xml
< set xmlns:android ="http://schemas.android.com/apk/res/android" > < translate android:interpolator ="@android:anim/accelerate_interpolator" android:fromXDelta ="0" android:toXDelta ="200" android:fromYDelta ="0" android:toYDelta ="180" android:duration ="2000" /> < scale android:interpolator ="@android:anim/accelerate_interpolator" 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" /> < alpha android:fromAlpha ="1.0" android:toAlpha ="1.0" android:duration ="@android:integer/config_mediumAnimTime" /> < rotate ....各个属性 ></ rotate > < Interpolator > 可以使用其子类和属性定义动画的运行方式,先快后慢,先慢后快等 </ Interpolator ></ set > 具体参数的用法,大家可以自己查资料

下面是第二种资源

< animation-list xmlns:android =”http://schemas.android.com/apk/res/android”
android:oneshot =”true”>
<item android:drawable =”@drawable/rocket_thrust1″ android:duration =”200″ />
< item android:drawable =”@drawable/rocket_thrust2″ android:duration =”200″ />
< item android:drawable =”@drawable/rocket_thrust3″ android:duration =”200″ />
</ animation-list >





< script src ="/javascripts/tinymce/plugins/javaeye/langs/zh.js" type ="text/javascript" ></ script > rif;">1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。在后面会介绍如何读取assets文件夹的资源!

代码示例

/Chapter03_Resource/src/com/amaker/test/MainActivity.java

代码
                            package com.amaker.test;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.amaker.ch03.color.TestColorActivity;
import com.amaker.ch03.dimen.TestDimensionActivity;
import com.amaker.ch03.drawable.TestBitmapActivity;
import com.amaker.ch03.layout.TestLayoutActivity;
import com.amaker.ch03.menu.TestMenuActivity;
import com.amaker.ch03.string.TestStringActivity;
import com.amaker.ch03.xml.TestXmlActivity;

public class MainActivity extends ListActivity
{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 菜单项数组
String[] items = {"Test Color","Test String","Test Dimension","Test XML","Test Bitmap","Test Menu","Test Layout"
} ;
// 将菜单项数组设置为ListView的列表项展示
setListAdapter(new ArrayAdapter
< String > (this,
android.R.layout.simple_list_item_
1 , items));
getListView().setTextFilterEnabled(true);

}

// 响应菜单项的单击事件
protected void onListItemClick(ListView l, View v, int position, long id)
{
Intent intent = null;
switch (position) {
case 0:
intent = new Intent(MainActivity.this,TestColorActivity.class);
startActivity(intent);
break;
case 1:
intent = new Intent(MainActivity.this,TestStringActivity.class);
startActivity(intent);
break;
case 2:
intent = new Intent(MainActivity.this,TestDimensionActivity.class);
startActivity(intent);
break;
case 3:
intent = new Intent(MainActivity.this,TestXmlActivity.class);
startActivity(intent);
break;
case 4:
intent = new Intent(MainActivity.this,TestBitmapActivity.class);
startActivity(intent);
break;
case 5:
intent = new Intent(MainActivity.this,TestMenuActivity.class);
startActivity(intent);
break;
case 6:
intent = new Intent(MainActivity.this,TestLayoutActivity.class);
startActivity(intent);
break;
}
}
}

获取颜色资源

/Chapter03_Resource/src/com/amaker/ch03/color/TestColorActivity.java

代码
                            package           com.amaker.ch03.color;

import android.app.Activity;
import android.os.Bundle;
import com.amaker.test.R;

public class TestColorActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.test_color);
// 引用颜色资源,设置背景色为红色
getWindow().setBackgroundDrawableResource(R.color.red_bg);
}
}

/Chapter03_Resource/res/values/colors.xml

                      <?        xml version="1.0" encoding="utf-8"        ?>        
< resources >
< color name ="red_bg" > #f00 </ color >
< color name ="blue_text" > #0000ff </ color >
</ resources >

尺寸资源资源

/Chapter03_Resource/src/com/amaker/ch03/dimen/TestDimensionActivity.java

代码
                            package           com.amaker.ch03.dimen;

import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.Button;

import com.amaker.test.R;

public class TestDimensionActivity extends Activity {
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.test_dimen);

myButton
= (Button)findViewById(R.id.Button01);

Resources r
= getResources();
float btn_h = r.getDimension(R.dimen.btn_height);
float btn_w = r.getDimension(R.dimen.btn_width);

myButton.setHeight((
int )btn_h);
myButton.setWidth((
int )btn_w);
}
}

/Chapter03_Resource/res/values/dimens.xml

代码
                            <?          xml version="1.0" encoding="utf-8"          ?>          
< resources >
< dimen name ="text_width" > 150px </ dimen >
< dimen name ="text_height" > 100px </ dimen >

< dimen name ="btn_width" > 30mm </ dimen >
< dimen name ="btn_height" > 10mm </ dimen >
</ resources >

Bitmap资源

/Chapter03_Resource/src/com/amaker/ch03/drawable/TestBitmapActivity.java

代码
                            package           com.amaker.ch03.drawable;

import android.app.Activity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.ImageView;

import com.amaker.test.R;

public class TestBitmapActivity extends Activity {

private ImageView myImageView;

@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.test_bitmap);

myImageView
= (ImageView)findViewById(R.id.bitmapImageView02);

Resources r
= getResources();
Drawable d
= r.getDrawable(R.drawable.moto);
myImageView.setImageDrawable(d);

}
}

/Chapter03_Resource/res/drawable

布局资源

/Chapter03_Resource/src/com/amaker/ch03/layout/TestLayoutActivity.java

代码
                            package           com.amaker.ch03.layout;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.amaker.test.R;

public class TestLayoutActivity extends Activity {
private TextView myTextView;
private EditText myEditText;
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.test_layout);

myTextView
= (TextView)findViewById(R.id.layoutTextView01);
myEditText
= (EditText)findViewById(R.id.layoutEditText01);
myButton
= (Button)findViewById(R.id.layoutButton01);

}
}

/Chapter03_Resource/res/layout/test_layout.xml

代码
                            <?          xml version="1.0" encoding="utf-8"          ?>          
< LinearLayout
xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation
="vertical"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent" >
<!-- 以上四个属性分别是:命名空间、 组件布局方向(这里是垂直)、布局的宽(充满屏幕)和高(充满屏幕) -->

<!-- 以下嵌套一个TableLayout -->
< TableLayout
android:layout_width ="fill_parent"
android:layout_height
="fill_parent"
android:stretchColumns
="1" >
< TableRow >
< TextView
android:text ="测试Layout:"
android:id
="@+id/layoutTextView01"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:textColor
="@color/red_bg" />

<!-- 以上五个属性分别是:文本内容、引用组件的ID、该组件的宽(内容的宽)、该组件的高(内容的高)、文件颜色 -->

< EditText
android:text =""
android:id
="@+id/layoutEditText01"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content" />
</ TableRow >

< TableRow android:gravity ="right" >
< Button
android:text ="Test"
android:id
="@+id/layoutButton01"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
/>
</ TableRow >
</ TableLayout >
</ LinearLayout >

菜单资源

/Chapter03_Resource/src/com/amaker/ch03/menu/TestMenuActivity.java

代码
                            package           com.amaker.ch03.menu;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

import com.amaker.test.R;

public class TestMenuActivity extends Activity {
private MenuInflater mi;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.test_menu);
mi
= new MenuInflater( this );
}

/*
* 创建菜单
*/
public boolean onCreateOptionsMenu(Menu menu) {
mi.inflate(R.menu.file_menu, menu);
return true ;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
aboutAlert(
" 本实例演示的是如何使用XML菜单资源来定义菜单! " );
break ;
case R.id.exit:
exitAlert(
" 真的要退出吗? " );
break ;
}
return true ;
}

// 显示对话框
private void exitAlert(String msg){
AlertDialog.Builder builder
= new AlertDialog.Builder( this );
builder.setMessage(msg)
.setCancelable(
false )
.setPositiveButton(
" 确定 " , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
}).setNegativeButton(
" 取消 " , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
return ;
}
});
AlertDialog alert
= builder.create();
alert.show();
}

// 显示对话框
private void aboutAlert(String msg){
AlertDialog.Builder builder
= new AlertDialog.Builder( this );
builder.setMessage(msg)
.setCancelable(
false )
.setPositiveButton(
" 确定 " , new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
AlertDialog alert
= builder.create();
alert.show();
}

}

/Chapter03_Resource/res/layout/test_menu.xml

代码
                            <?          xml version="1.0" encoding="utf-8"          ?>          
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation
="vertical"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent" >

< TextView
android:text ="测试菜单资源"
android:id
="@+id/menuTextView01"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content" ></ TextView >

</ LinearLayout >

字符串资源

/Chapter03_Resource/src/com/amaker/ch03/string/TestStringActivity.java

代码
                            package           com.amaker.ch03.string;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import com.amaker.test.R;

public class TestStringActivity extends Activity {
private TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.test_string);
myTextView
= (TextView)findViewById(R.id.myTextView02);
String str
= getString(R.string.test_str2).toString();
myTextView.setText(str);
}
}

/Chapter03_Resource/res/layout/test_string.xml

代码
                            <?          xml version="1.0" encoding="utf-8"          ?>          
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation
="vertical" android:layout_width ="fill_parent"
android:layout_height
="fill_parent" >
< TextView
android:text ="@string/test_str1"
android:id
="@+id/myTextView01"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
/>

< TextView
android:text =""
android:id
="@+id/myTextView02"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
/>
</ LinearLayout >

xml资源

代码
                            package           com.amaker.ch03.xml;

import java.io.IOException;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.amaker.test.R;

public class TestXmlActivity extends Activity {
private TextView myTextView;
private Button myButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.test_xml);

myTextView
= (TextView)findViewById(R.id.xmlContentTextView01);
myButton
= (Button)findViewById(R.id.xmltTestButton01);

myButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
int counter = 0 ;
StringBuilder sb
= new StringBuilder( "" );
Resources r
= getResources();
XmlResourceParser xrp
= r.getXml(R.xml.test);
try {
while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
if (xrp.getEventType() == XmlResourceParser.START_TAG) {
String name
= xrp.getName();
if (name.equals( " customer " )){
counter
++ ;
sb.append(
" " + counter + " 条客户信息: " + " \n " );
sb.append(xrp.getAttributeValue(
0 ) + " \n " );
sb.append(xrp.getAttributeValue(
1 ) + " \n " );
sb.append(xrp.getAttributeValue(
2 ) + " \n " );
sb.append(xrp.getAttributeValue(
3 ) + " \n\n " );
}
}
else if (xrp.getEventType() == XmlPullParser.END_TAG) {
}
else if (xrp.getEventType() == XmlPullParser.TEXT) {
}
xrp.next();
}
myTextView.setText(sb.toString());
}
catch (XmlPullParserException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
});
}
}

代码
                            <?          xml version="1.0" encoding="utf-8"          ?>          
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation
="vertical" android:layout_width ="fill_parent"
android:layout_height
="fill_parent" >

< Button
android:text ="获得XML内容"
android:id
="@+id/xmltTestButton01"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content" ></ Button >


< TextView
android:text =""
android:id
="@+id/xmlContentTextView01"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
/>

</ LinearLayout >

更多相关文章

  1. Android中使用SAX方式解析XML文件
  2. Android中的资源布局
  3. 向eclipse中导入android中的sample样例+gen目录缺少R.java文件
  4. android通过代码来开启和关闭移动网络
  5. [android][利用JNI技术在Android中调用、调试C++代码]

随机推荐

  1. [置顶] Android下通过pocketsphinx实现离
  2. declare-styleable:自定义控件的属性,andr
  3. Android(安卓)魔塔小游戏--界面设计以及
  4. 随笔之如何判断Android应用进程是否为单
  5. Android(安卓)如何连续的扫描蓝牙的RSSI
  6. Android进程保活(最新)带你浅析这几种可行
  7. Android图像处理技术(实现Android中的PS)(三
  8. Android经典项目开发之天气APP实例分享
  9. 【android免root脚本制作】基于控件的操
  10. Android(安卓)7.1添加一个 系统底层服务