一.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的写法如下:

        
  1. 代码
  2. 一个android工程中,有各种类型的资源文件,大致可以分为以下几种:
  3. 、颜色#RGB#ARGB#RRGGBB#AARRGGBB
  4. 颜色资源应该位于<resourses></resourses>标签下
  5. 路径res/values/colors.xml名字可以随意
  6. 定义<colorname=”cname”>value</color>
  7. 使用Resourse.getValues.getColor
  8. <?xmlversion="1.0"encoding="utf-8"?>
  9. <resources>
  10. <colorname="white">#FFFFFF</color>
  11. <colorname="black">#000000</color>
  12. </resources>
  13. 、字串
  14. 字串资源应该位于<resourses></resourses>标签下
  15. 路径res/values/strings.xml
  16. 定义<Stringname=”sname”>value</String>
  17. 使用Resourse.getValues.getString
  18. <?xmlversion="1.0"encoding="utf-8"?>
  19. <resources>
  20. <stringname="hello">HelloWorld,ResrouseTestActivity!</string>
  21. <stringname="app_name">ResrouseTest</string>
  22. </resources>
  23. 、图片
  24. 图片资源一般使用png格式,使用其他格式的会出现各种问题,貌似不支持gif格式的图片,可是使用Movie来播放gif格式的图片
  25. 路径res/drawable
  26. 可以直接存放图片也可以是xml等配置文件(一般用于自定义组件)
  27. 使用getDrawable
  28. 、图片的颜色
  29. 位于res/values/my_drawable.xml名字随意
  30. <?xmlversion="1.0"encoding="utf-8"?>
  31. <resources>
  32. <drawablename="solid_red">#FF0000</drawable>
  33. </resources>
  34. 定义用于填充一个组件的颜色值,即给view设置背景色。用法和drawable下的图片一样,其实没多少意义,使用颜色定义就ok了,目前我是这样认为的,可能有更好的优点,不过我没发现罢了,嘿嘿,continue...
  35. 、单位资源
  36. 单位资源应该位于<resourses></resourses>标签下
  37. 路径res/values/dimen.xml名字可以随意
  38. 使用和String、color类似
  39. <?xmlversion="1.0"encoding="utf-8"?>
  40. <resources>
  41. <dimenname="dimen_name">2px</dimen>
  42. <dimenname="dimen_px">5px</dimen>
  43. <dimenname="dimen_pt">3pt</dimen>
  44. <dimenname="dimen_dp">3dp</dimen>
  45. </resources>
  46. 、Nine-patch(可以拉伸的小图片)
  47. 支持图片的拉伸
  48. 貌似就是所谓的png图片文件资源,图片在应用view的背景时,如果被设为background则会随view的大小变化做相应的拉伸和收缩,像ImageView这类设置src图片则不随view变化,按其自身大小显示部分或全部!
  49. 、菜单
  50. 菜单即可以从代码中实现也可以在资源文件中配置,这里就是要描述一下第二种<?xmlversion="1.0"encoding="utf-8"?><menuxmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/previous"android:title="@string/previous"android:enabled="false"android:icon="@android:drawable/ic_media_previous"/><itemandroid:id="@+id/play_pause"android:title="@string/play"android:icon="@android:drawable/ic_media_play"/><itemandroid:id="@+id/next"android:title="@string/next"android:icon="@android:drawable/ic_menu_next"/></menu>8、Layout布局
  51. 这个就是你经常看到的与用户交互的界面的xml文件,就是各个view的排列和嵌套,没什么好说的啦
  52. 、风格和主题、
  53. 风格主要是指view的显示风格res/values/filename.xml
  54. <?xmlversion=”1.0″encoding=”utf-8″?>
  55. <resources>
  56. <stylename=”SpecialText”parent=”@style/Text”>
  57. <itemname=”android:textSize”>18sp</item>
  58. <itemname=”android:textColor”>#008</item>
  59. </style>
  60. </resources>
  61. 主题主要针对Activity等,可以在AndroidManifest中定义的<application><activity>元素将主题添加到整个程序或者某个Activity,但是主题是不能应用在某一个单独的View里.风格可以自己定义也可以使用程序自带的或是继承已有的风格。
  62. <?xmlversion="1.0"encoding="utf-8"?><resources><stylename="CustomTheme"><itemname="android:windowNoTitle">true</item><itemname="windowFrame">@drawable/screen_frame</item><itemname="windowBackground">@drawable/screen_background_white</item><itemname="panelForegroundColor">#FF000000</item><itemname="panelBackgroundColor">#FFFFFFFF</item><itemname="panelTextColor">?panelForegroundColor</item><itemname="panelTextSize">14</item><itemname="menuItemTextColor">?panelTextColor</item><itemname="menuItemTextSize">?panelTextSize</item></style></resources>
  63. 、动画
  64. 动画资源分为两种,一是实现图片的translate、scale、rotate、alpha四种变化。还可以设置动画的播放特性;另一种是帧动画,逐帧播放设置的资源
  65. 先说一下第一种
  66. Res/anim/filename.xml<setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:interpolator="@android:anim/accelerate_interpolator"android:fromXDelta="0"android:toXDelta="200"android:fromYDelta="0"android:toYDelta="180"android:duration="2000"/><scaleandroid: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"/><alphaandroid:fromAlpha="1.0"android:toAlpha="1.0"android:duration="@android:integer/config_mediumAnimTime"/><rotate....各个属性></rotate><Interpolator>可以使用其子类和属性定义动画的运行方式,先快后慢,先慢后快等</Interpolator></set>具体参数的用法,大家可以自己查资料
  67. 下面是第二种资源
  68. <animation-listxmlns:android=”http://schemas.android.com/apk/res/android”
  69. android:oneshot=”true”>
  70. <itemandroid:drawable=”@drawable/rocket_thrust1″android:duration=”200″/>
  71. <itemandroid:drawable=”@drawable/rocket_thrust2″android:duration=”200″/>
  72. <itemandroid:drawable=”@drawable/rocket_thrust3″android:duration=”200″/>
  73. </animation-list>
  74. <scriptsrc="/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

        
  1. 代码
  2. packagecom.amaker.test;
  3. importandroid.app.ListActivity;
  4. importandroid.content.Intent;
  5. importandroid.os.Bundle;
  6. importandroid.view.View;
  7. importandroid.widget.ArrayAdapter;
  8. importandroid.widget.ListView;
  9. importcom.amaker.ch03.color.TestColorActivity;
  10. importcom.amaker.ch03.dimen.TestDimensionActivity;
  11. importcom.amaker.ch03.drawable.TestBitmapActivity;
  12. importcom.amaker.ch03.layout.TestLayoutActivity;
  13. importcom.amaker.ch03.menu.TestMenuActivity;
  14. importcom.amaker.ch03.string.TestStringActivity;
  15. importcom.amaker.ch03.xml.TestXmlActivity;
  16. publicclassMainActivityextendsListActivity{
  17. @Override
  18. publicvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. //菜单项数组
  21. String[]items={"TestColor","TestString","TestDimension","TestXML","TestBitmap","TestMenu","TestLayout"};
  22. //将菜单项数组设置为ListView的列表项展示
  23. setListAdapter(newArrayAdapter<String>(this,
  24. android.R.layout.simple_list_item_1,items));
  25. getListView().setTextFilterEnabled(true);
  26. }
  27. //响应菜单项的单击事件
  28. protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){
  29. Intentintent=null;
  30. switch(position){
  31. case0:
  32. intent=newIntent(MainActivity.this,TestColorActivity.class);
  33. startActivity(intent);
  34. break;
  35. case1:
  36. intent=newIntent(MainActivity.this,TestStringActivity.class);
  37. startActivity(intent);
  38. break;
  39. case2:
  40. intent=newIntent(MainActivity.this,TestDimensionActivity.class);
  41. startActivity(intent);
  42. break;
  43. case3:
  44. intent=newIntent(MainActivity.this,TestXmlActivity.class);
  45. startActivity(intent);
  46. break;
  47. case4:
  48. intent=newIntent(MainActivity.this,TestBitmapActivity.class);
  49. startActivity(intent);
  50. break;
  51. case5:
  52. intent=newIntent(MainActivity.this,TestMenuActivity.class);
  53. startActivity(intent);
  54. break;
  55. case6:
  56. intent=newIntent(MainActivity.this,TestLayoutActivity.class);
  57. startActivity(intent);
  58. break;
  59. }
  60. }
  61. }

获取颜色资源

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

        
  1. 代码
  2. packagecom.amaker.ch03.color;
  3. importandroid.app.Activity;
  4. importandroid.os.Bundle;
  5. importcom.amaker.test.R;
  6. publicclassTestColorActivityextendsActivity{
  7. @Override
  8. publicvoidonCreate(BundlesavedInstanceState){
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.test_color);
  11. //引用颜色资源,设置背景色为红色
  12. getWindow().setBackgroundDrawableResource(R.color.red_bg);
  13. }
  14. }

/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

        
  1. 代码
  2. packagecom.amaker.ch03.dimen;
  3. importandroid.app.Activity;
  4. importandroid.content.res.Resources;
  5. importandroid.os.Bundle;
  6. importandroid.widget.Button;
  7. importcom.amaker.test.R;
  8. publicclassTestDimensionActivityextendsActivity{
  9. privateButtonmyButton;
  10. @Override
  11. publicvoidonCreate(BundlesavedInstanceState){
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.test_dimen);
  14. myButton=(Button)findViewById(R.id.Button01);
  15. Resourcesr=getResources();
  16. floatbtn_h=r.getDimension(R.dimen.btn_height);
  17. floatbtn_w=r.getDimension(R.dimen.btn_width);
  18. myButton.setHeight((int)btn_h);
  19. myButton.setWidth((int)btn_w);
  20. }
  21. }

/Chapter03_Resource/res/values/dimens.xml

        
  1. 代码
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <resources>
  4. <dimenname="text_width">150px</dimen>
  5. <dimenname="text_height">100px</dimen>
  6. <dimenname="btn_width">30mm</dimen>
  7. <dimenname="btn_height">10mm</dimen>
  8. </resources>

Bitmap资源

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

        
  1. 代码
  2. packagecom.amaker.ch03.drawable;
  3. importandroid.app.Activity;
  4. importandroid.content.res.Resources;
  5. importandroid.graphics.drawable.Drawable;
  6. importandroid.os.Bundle;
  7. importandroid.widget.ImageView;
  8. importcom.amaker.test.R;
  9. publicclassTestBitmapActivityextendsActivity{
  10. privateImageViewmyImageView;
  11. @Override
  12. publicvoidonCreate(BundlesavedInstanceState){
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.test_bitmap);
  15. myImageView=(ImageView)findViewById(R.id.bitmapImageView02);
  16. Resourcesr=getResources();
  17. Drawabled=r.getDrawable(R.drawable.moto);
  18. myImageView.setImageDrawable(d);
  19. }
  20. }

/Chapter03_Resource/res/drawable

布局资源

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

        
  1. 代码
  2. packagecom.amaker.ch03.layout;
  3. importandroid.app.Activity;
  4. importandroid.os.Bundle;
  5. importandroid.widget.Button;
  6. importandroid.widget.EditText;
  7. importandroid.widget.TextView;
  8. importcom.amaker.test.R;
  9. publicclassTestLayoutActivityextendsActivity{
  10. privateTextViewmyTextView;
  11. privateEditTextmyEditText;
  12. privateButtonmyButton;
  13. @Override
  14. publicvoidonCreate(BundlesavedInstanceState){
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.test_layout);
  17. myTextView=(TextView)findViewById(R.id.layoutTextView01);
  18. myEditText=(EditText)findViewById(R.id.layoutEditText01);
  19. myButton=(Button)findViewById(R.id.layoutButton01);
  20. }
  21. }

/Chapter03_Resource/res/layout/test_layout.xml

        
  1. 代码
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <LinearLayout
  4. xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:orientation="vertical"
  6. android:layout_width="fill_parent"
  7. android:layout_height="fill_parent">
  8. <!--以上四个属性分别是:命名空间、组件布局方向(这里是垂直)、布局的宽(充满屏幕)和高(充满屏幕)-->
  9. <!--以下嵌套一个TableLayout-->
  10. <TableLayout
  11. android:layout_width="fill_parent"
  12. android:layout_height="fill_parent"
  13. android:stretchColumns="1">
  14. <TableRow>
  15. <TextView
  16. android:text="测试Layout:"
  17. android:id="@+id/layoutTextView01"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:textColor="@color/red_bg"/>
  21. <!--以上五个属性分别是:文本内容、引用组件的ID、该组件的宽(内容的宽)、该组件的高(内容的高)、文件颜色-->
  22. <EditText
  23. android:text=""
  24. android:id="@+id/layoutEditText01"
  25. android:layout_width="fill_parent"
  26. android:layout_height="wrap_content"/>
  27. </TableRow>
  28. <TableRowandroid:gravity="right">
  29. <Button
  30. android:text="Test"
  31. android:id="@+id/layoutButton01"
  32. android:layout_width="wrap_content"
  33. android:layout_height="wrap_content"
  34. />
  35. </TableRow>
  36. </TableLayout>
  37. </LinearLayout>

菜单资源

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

        
  1. 代码
  2. packagecom.amaker.ch03.menu;
  3. importandroid.app.Activity;
  4. importandroid.app.AlertDialog;
  5. importandroid.content.DialogInterface;
  6. importandroid.os.Bundle;
  7. importandroid.view.Menu;
  8. importandroid.view.MenuInflater;
  9. importandroid.view.MenuItem;
  10. importcom.amaker.test.R;
  11. publicclassTestMenuActivityextendsActivity{
  12. privateMenuInflatermi;
  13. @Override
  14. publicvoidonCreate(BundlesavedInstanceState){
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.test_menu);
  17. mi=newMenuInflater(this);
  18. }
  19. /*
  20. *创建菜单
  21. */
  22. publicbooleanonCreateOptionsMenu(Menumenu){
  23. mi.inflate(R.menu.file_menu,menu);
  24. returntrue;
  25. }
  26. @Override
  27. publicbooleanonOptionsItemSelected(MenuItemitem){
  28. switch(item.getItemId()){
  29. caseR.id.about:
  30. aboutAlert("本实例演示的是如何使用XML菜单资源来定义菜单!");
  31. break;
  32. caseR.id.exit:
  33. exitAlert("真的要退出吗?");
  34. break;
  35. }
  36. returntrue;
  37. }
  38. //显示对话框
  39. privatevoidexitAlert(Stringmsg){
  40. AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
  41. builder.setMessage(msg)
  42. .setCancelable(false)
  43. .setPositiveButton("确定",newDialogInterface.OnClickListener(){
  44. publicvoidonClick(DialogInterfacedialog,intid){
  45. finish();
  46. }
  47. }).setNegativeButton("取消",newDialogInterface.OnClickListener(){
  48. publicvoidonClick(DialogInterfacedialog,intid){
  49. return;
  50. }
  51. });
  52. AlertDialogalert=builder.create();
  53. alert.show();
  54. }
  55. //显示对话框
  56. privatevoidaboutAlert(Stringmsg){
  57. AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
  58. builder.setMessage(msg)
  59. .setCancelable(false)
  60. .setPositiveButton("确定",newDialogInterface.OnClickListener(){
  61. publicvoidonClick(DialogInterfacedialog,intid){
  62. }
  63. });
  64. AlertDialogalert=builder.create();
  65. alert.show();
  66. }
  67. }

/Chapter03_Resource/res/layout/test_menu.xml

        
  1. 代码
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  4. android:orientation="vertical"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent">
  7. <TextView
  8. android:text="测试菜单资源"
  9. android:id="@+id/menuTextView01"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"></TextView>
  12. </LinearLayout>

字符串资源

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

        
  1. 代码
  2. packagecom.amaker.ch03.string;
  3. importandroid.app.Activity;
  4. importandroid.os.Bundle;
  5. importandroid.widget.TextView;
  6. importcom.amaker.test.R;
  7. publicclassTestStringActivityextendsActivity{
  8. privateTextViewmyTextView;
  9. @Override
  10. publicvoidonCreate(BundlesavedInstanceState){
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.test_string);
  13. myTextView=(TextView)findViewById(R.id.myTextView02);
  14. Stringstr=getString(R.string.test_str2).toString();
  15. myTextView.setText(str);
  16. }
  17. }

/Chapter03_Resource/res/layout/test_string.xml

        
  1. 代码
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  4. android:orientation="vertical"android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <TextView
  7. android:text="@string/test_str1"
  8. android:id="@+id/myTextView01"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. />
  12. <TextView
  13. android:text=""
  14. android:id="@+id/myTextView02"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. />
  18. </LinearLayout>

xml资源

        
  1. 代码
  2. packagecom.amaker.ch03.xml;
  3. importjava.io.IOException;
  4. importorg.xmlpull.v1.XmlPullParser;
  5. importorg.xmlpull.v1.XmlPullParserException;
  6. importandroid.app.Activity;
  7. importandroid.content.res.Resources;
  8. importandroid.content.res.XmlResourceParser;
  9. importandroid.os.Bundle;
  10. importandroid.view.View;
  11. importandroid.view.View.OnClickListener;
  12. importandroid.widget.Button;
  13. importandroid.widget.TextView;
  14. importcom.amaker.test.R;
  15. publicclassTestXmlActivityextendsActivity{
  16. privateTextViewmyTextView;
  17. privateButtonmyButton;
  18. @Override
  19. publicvoidonCreate(BundlesavedInstanceState){
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.test_xml);
  22. myTextView=(TextView)findViewById(R.id.xmlContentTextView01);
  23. myButton=(Button)findViewById(R.id.xmltTestButton01);
  24. myButton.setOnClickListener(newOnClickListener(){
  25. @Override
  26. publicvoidonClick(Viewv){
  27. intcounter=0;
  28. StringBuildersb=newStringBuilder("");
  29. Resourcesr=getResources();
  30. XmlResourceParserxrp=r.getXml(R.xml.test);
  31. try{
  32. while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
  33. if(xrp.getEventType()==XmlResourceParser.START_TAG){
  34. Stringname=xrp.getName();
  35. if(name.equals("customer")){
  36. counter++;
  37. sb.append("第"+counter+"条客户信息:"+"\n");
  38. sb.append(xrp.getAttributeValue(0)+"\n");
  39. sb.append(xrp.getAttributeValue(1)+"\n");
  40. sb.append(xrp.getAttributeValue(2)+"\n");
  41. sb.append(xrp.getAttributeValue(3)+"\n\n");
  42. }
  43. }elseif(xrp.getEventType()==XmlPullParser.END_TAG){
  44. }elseif(xrp.getEventType()==XmlPullParser.TEXT){
  45. }
  46. xrp.next();
  47. }
  48. myTextView.setText(sb.toString());
  49. }catch(XmlPullParserExceptione){
  50. e.printStackTrace();
  51. }catch(IOExceptione){
  52. e.printStackTrace();
  53. }
  54. }
  55. });
  56. }
  57. }

        
  1. 代码
  2. <?xmlversion="1.0"encoding="utf-8"?>
  3. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  4. android:orientation="vertical"android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <Button
  7. android:text="获得XML内容"
  8. android:id="@+id/xmltTestButton01"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"></Button>
  11. <TextView
  12. android:text=""
  13. android:id="@+id/xmlContentTextView01"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. />
  17. </LinearLayout>

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. android 在myeclipse中查看源码
  4. adb shell 命令详解
  5. android工程gen目录无法生成的解决办法汇总
  6. 使用Android内部的DownloadProvider下载文件,并获取cache权限
  7. YUV420P、YUV420SP、NV12、NV21和RGB互相转换并存储为JPEG以及PN
  8. android四层框架
  9. Android(安卓)轻松实现语音朗读

随机推荐

  1. android 水下气泡上升界面效果
  2. Android(安卓)获取当前连接的wifi名称和r
  3. Android(安卓)APP 内部捐赠实现(支付宝&
  4. React Native安卓实现更新下载、安装
  5. AndroidStudio导入旧版本工程若干问题
  6. java化改造--xml布局文件转成java——学
  7. Android周学习Step By Step(9)--Intent之广
  8. rtl8188eu WiFi移植
  9. android webview之腾讯X5服务
  10. Android(安卓)距离感应器和耳机状态监测(