一、资源访问:   

(一)、概念:

    Android中的资源是指可以在代码中使用的外部文件,这些文件作为应用程序的一部分,被编译到应用程序中。在项目中,这些资源被保存到Android应用的res目录下。

(二)、资源分类:

  1. id;

  2. 字符串资源文件;

  3. 颜色资源

  4. 尺寸资源文件

  5. 布局资源

  6. 数组资源

  7. 样式和主题资源

  8. 菜单资源

  9. 已编译的任意XML资源文件【重要】: res/xml

  10. 未编译的原始资源文件: res/raw

  11. 图像(Drawable)资源

    1. 普通图像资源

    2. xml图像资源:bitmap

    3. 图层(Layer)资源:layer-list , item

    4. 图像状态(State)资源:selector , item

    5. 图像级别(Level)资源:level-list , item

    6. 淡入淡出(CrossFade)资源:transition , item(只支持两个)

    7. 外形(Shape)资源:shape(shape , gradient , padding ,corners , stroke)

  12. 动画资源

  • 透明度补间动画    alpha

  • 缩放补间动画    scale

  • 旋转补间动画    rotate

  • 移动补间动画     translate

  1. 属性动画:res/animator   (api11之后出现)   

  2. 逐帧动画: res/anim      animation-list , item

  3. 补间动画:  res/anim

【备注:】资源编译器会编译除了raw资源以外的所有资源,并将它们全部放到最终的.apk文件中。apk(Android Package)包含Android应用程序的代码和资源。

(三)、各种资源文件的xml格式:

1、字符串资源文件:

示例代码:

    红色    绿色    蓝色

Java文件中获取方式:getResources().getString(R.string.red);

2、颜色资源文件:

示例代码:

    #f00    #0f0    #00f

在需要调用该颜色的地方写法是:android:background="@color/blue"

Java文件中获取方式:getResources().getColor(R.color.blue);

3、尺寸资源文件:

示例代码:

    20dp    10dp

Java文件中获取方式:getResources().getDimension(R.dimen.title);

4、数组资源文件:

    Android中,不推荐将数组直接定义在java文件中,而是使用数组资源文件来定义数组。

    定义在res下values目录下:arrays.xml文件中。格式如下:

  • 根元素:<resources>

  • 子元素:可以有三种

    • :称为类型数组Typed-Array资源(或者:资源数组资源

  • 下级子元素:数值

示例代码:

             主屏模式        wifi设置        蓝牙设置        网络设置        More    

Java文件中获取方式:getResources().getStringArray(R.array.choiceItems);

【备注:】如果是int型数组,则格式如下:

             20        30        40        50    

Java文件中获取方式:getResources().getIntArray(R.array.age);

【备注:】如果是资源数组资源,则格式如下:

             @drawable/home        @drawable/setting        @drawable/logout                 首页        设置        退出    

Java文件中获取方式:

TypedArray arrIcons = getResources().obtainTypedArray(R.array.icons);

Drawable drawable = arrIcons.getDrawable(0);

5、原始XML资源

  • 位置:res/xml目录下;

  • 定义格式:格式良好的,没有特殊要求的普通xml文件;

  • Java文件中获取方式:getResources().getXml(R.xml.文件名称);

  • 解析xml的核心代码:

 // 从资源文件夹中读取原始xml资源文件    XmlResourceParser pullParser = getResources().getXml(R.xml.citylist);    //将读取xml资源文件返回的XmlResourceParser 对象继续解析,获取到xml节点中需要的数据。    //备注:XmlResourceParser 类是XmlPullParser的子类    public List> parseXML(XmlResourceParser pullParser,                        String tagName) {                List> list = null;                Map map = null;                int event;                try {                        // 根据读取的xml节点来获取事件类型                        event = pullParser.getEventType();                        // 只要不是文档结束就一直执行循环                        while (event != XmlPullParser.END_DOCUMENT) {                                // 获取每个节点的节点名称                                String nodeName = pullParser.getName();                                // 根据事件类型来执行不同的操作                                switch (event) {                                // 当文档开始就实例化list                                case XmlPullParser.START_DOCUMENT:                                        list = new ArrayList>();                                        break;                                // 根据节点的不同来执行实例化map和往map中添加数据的操作                                case XmlPullParser.START_TAG:                                        if (nodeName.equals(tagName)) {                                                map = new HashMap();                                                // 本例中,没有文本节点,有n个属性节点,而所需要的内容全在属性节点中。故使用getAttributeValue(index)方法                                                // getAttributeValue(index)方法中的                                                // index是指节点的索引下标,从0开始。可以理解成属性点 顺序。                                                map.put(pullParser.getAttributeValue(3),                                                                pullParser.getAttributeValue(2));                                                list.add(map);                                        }                                        break;                                }                                // 执行循环                                event = pullParser.next();                        }                } catch (Exception e) {                        e.printStackTrace();                }                return list;        }

6、原生文件资源: raw

【备注:】raw目录下主要放置的资源有音频、视频等文件。raw目录下的文件会在R.java中被注册。

 如何访问raw目录下的文件?

 InputStream is = getResources().openRawResource(R.raw.文件名);

7、图像资源:

A、普通图像资源:

Java文件中获取方式:
getResources().getDrawable(R.drawable.p_w_picpathname);
int resId = getResources().getIdentifier(imgName, "drawable",  this.getPackageName());
view.getResources().getResourceName(resid)
int resId = context.getResources().getIdentifier("图片名称", "drawable", context.getPackageName()); 
p_w_picpathView_main_showpic.setImageResource(resId);

B、xml图像资源:bitmap

bitmapandroid:gravity

C、图层(Layer)资源:layer-list

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

D、图像状态(State)资源:selector

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

E、图像级别(Level)资源:level-list

//UI代码:<?xml version="1.0"encoding="utf-8"?>        
//java代码:public class LevelActivity extends Activity {    private ImageView p_w_picpathview_lamp;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_level);        p_w_picpathview_lamp = (ImageView) findViewById(R.id.p_w_picpathview_lamp);    }    public void clickButton(View view) {        switch (view.getId()) {        case R.id.button_level_lampoff:            p_w_picpathview_lamp.setImageLevel(9);            break;        case R.id.button_level_lampon:            p_w_picpathview_lamp.setImageLevel(15);            break;        }    }}

F、淡入淡出(CrossFade)资源:transition

<?xml version="1.0"encoding="utf-8"?>            
//java代码:public class CrossfadeActivity extends Activity {    private ImageView p_w_picpathview_lamp;    private TransitionDrawable drawable = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_crossfade);        p_w_picpathview_lamp = (ImageView) findViewById(R.id.p_w_picpathview_lamp);        drawable = (TransitionDrawable) p_w_picpathview_lamp.getDrawable();    }    public void clickButton(View view) {        switch (view.getId()) {        case R.id.button_level_lampon:            drawable.startTransition(3000);            break;        case R.id.button_level_lampoff:            drawable.reverseTransition(3000);            break;        }    }}

G、外形(Shape)资源:shape

<?xmlversion="1.0"encoding="utf-8"?>                


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  6. 一款霸榜 GitHub 的开源 Linux 资源监视器!
  7. C虾仔笔记 - 数据存储
  8. Android资源文件混淆
  9. Java JVM、Android(安卓)Dalvik与Android(安卓)ART的区别,一篇就

随机推荐

  1. Android应用程序消息处理机制(Looper、Han
  2. android 中SoundPool总结
  3. Android(安卓)实用工具Hierarchy Viewer
  4. android打开系统联系人界面
  5. Android(安卓)安装环境搭建
  6. android之wifi移植全过程(二)
  7. 实验1:第一个Android程序
  8. Android之使用Android-query框架进行开发
  9. Android文件存储位置简述
  10. Android(安卓)SystemProperties (java)