美文网首页我爱编程
Android基础05-Android资源访问

Android基础05-Android资源访问

作者: 白话徐文涛 | 来源:发表于2018-02-24 14:04 被阅读34次

    一、资源访问:【掌握】

    (一)、概念:

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

    (二)、资源分类:

    id;

    字符串资源文件;

    颜色资源

    尺寸资源文件

    布局资源

    数组资源

    样式和主题资源

    菜单资源

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

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

    图像(Drawable)资源

    普通图像资源

    xml图像资源:bitmap

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

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

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

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

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

    动画资源

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

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

    补间动画:  res/anim

    透明度补间动画    alpha

    缩放补间动画    scale

    旋转补间动画    rotate

    移动补间动画     translate

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

    13、attr资源

    (三)、各种资源文件的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文件中。格式如下:

    根元素:

    子元素:可以有三种。

    :称为类型数组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.imagename);

    int resId = getResources().getIdentifier(imgName, "drawable", this.getPackageName());

    view.getResources().getResourceName(resid)

    int resId = context.getResources().getIdentifier("图片名称", "drawable", context.getPackageName());

    imageView_main_showpic.setImageResource(resId);

    B、xml图像资源:bitmap

    android:src="@drawable/android1"

    android:gravity="center"/>

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

    android:top="10dp"

    android:left="10dp">

    android:src="@drawable/android1"

    android:gravity="center"/>

    android:top="10dp"

    android:left="10dp">

    android:src="@drawable/android2"

    android:gravity="center"/>

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

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

    //UI代码:

    android:drawable="@drawable/lamp_off"

    android:minLevel=“5"  android:maxLevel="10"/>

    android:drawable="@drawable/lamp_on"

    android:minLevel=“11"  android:maxLevel="20"/>

    //java代码:

    publicclass LevelActivity extends Activity {

    private ImageView imageview_lamp;

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_level);

    imageview_lamp = (ImageView) findViewById(R.id.imageview_lamp);

    }

    publicvoid clickButton(View view) {

    switch (view.getId()) {

    case R.id.button_level_lampoff:

    imageview_lamp.setImageLevel(9);

    break;

    case R.id.button_level_lampon:

    imageview_lamp.setImageLevel(15);

    break;

    default:

    break;

    }

    }

    }

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

    //java代码:

    publicclass CrossfadeActivity extends Activity {

    private ImageView imageview_lamp;

    private TransitionDrawable drawable = null;

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_crossfade);

    imageview_lamp = (ImageView) findViewById(R.id.imageview_lamp);

    drawable = (TransitionDrawable) imageview_lamp.getDrawable();

    }

    publicvoid 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;

    default:

    break;

    }

    }

    }

    G、外形(Shape)资源:shape

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle”>


    android:startColor="#FF00"

    android:endColor="#80FF00FF"

    android:angle="45"/>

    android:left="20dp"

    android:top="20dp"

    android:right="20dp"

    android:bottom="20dp"/>

    android:width="2dp"

    android:color="#00F"/>

    android:radius="8dp"/>


    相关文章

      网友评论

        本文标题:Android基础05-Android资源访问

        本文链接:https://www.haomeiwen.com/subject/gnmqxftx.html