zoukankan      html  css  js  c++  java
  • android中的资源

    一、概括地讲,android中的资源是指非代码部分,比如图片、MP3、字符串、xml文件等。
    在一个android工程中,和src源文件夹并列的有两个文件夹,分别叫做res和assets,都是用来保存资源文件的。

    不同点:
    1.res中的资源可以通过R资源类直接访问。这种方式比较常用。
    res中有包含各种子文件夹,对资源进行分类:
    anim(xml动画文件)、drawable(图片),layout(布局文件)、menu(菜单)、raw(二进制文件)、values(常量值)、xml(xml文件)。
    2.assets中保存的一般是原始的文件,例如mp3文件,android不能直接通过R类直接访问,必须通过AssertManager类以二进制流形式来读取。

    二、Android中的资源是在代码中的使用的外部文件。这些文件作为应用程序的一部分,被便衣到应用程序当中。
    一般使用资源分为两种方式:
    1、在代码中使用context的getResources()方法得到Resource对象,该对象提供了获得各种类型资源的方法。
    2、在其他资源中引用资源的一般格式是这样的:
    1)、@[包名称:]资源类型/资源名称
    2)、R.资源类型.资源名称

    A)颜色资源的使用:
    1)、首先在values目录下新建color.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <color name="Text_color">#cc0000</color>
    <color name="bg_color">#99cc33</color>
    <color name="btntext_color">#003399</color>
    <color name="btnbg_color">#ffcc00</color>
    </resources>

    2)、
    以按钮为例:
    public void test(View view) {
      //颜色
      int i = this.getResources().getColor(R.color.bg_color);//获取颜色值
      Toast.makeText(this, ""+i, 1).show();
      this.getWindow().setBackgroundDrawableResource(R.color.bg_color);

    }


    B)字符串资源的使用:

    以按钮为例:
    public void test(View view) {

    //字符串
    Button btn = (Button) findViewById(R.id.button1);
    String str = this.getResources().getString(R.string.welcome);
    String str2 = this.getString(R.string.welcome);//等价于上面
    btn.setText(str2);


    }

    在一个android工程中,我们可能会使用到大量的字符串作为提示信息。这些字符串都可以作为字符串资源声明在配置文件中,从而实现程序的可配置性。
    在代码中我们使用Context.getString()方法,通过传递资源ID参数来得到该字符串,也可以在其他资源中引用字符串资源,引用格式为“@string/字符串资源名称”。
    <resources>
    <string name="string_name">string_value</string>
    </resources>
    --------------------------------------------------------------------------
    资源位置 res/values/string.xml
    --------------------------------------------------------------------------
    获得string方法 Context.getString
    --------------------------------------------------------------------------
    引用资源方式 java中:R.string.string_name
    xml中:@string/string_name
    --------------------------------------------------------------------------

    C)尺寸(dimens)资源的使用
    我们可以使用一些常用的尺寸单位来定义一些文字尺寸、视图组件的宽和高等。尺寸资源是一个数字类型的数据,被定义在res/values/dimens.xml文件中。
    --------------------------------------------------------------------------
    单位表示 单位名称 说明
    --------------------------------------------------------------------------
    px 像素 屏幕真实像素
    --------------------------------------------------------------------------
    in 英寸 基于屏幕的物理英寸
    --------------------------------------------------------------------------
    dp 和密度无关的像素 相对屏幕物理密度的抽象单位
    --------------------------------------------------------------------------
    sp 和精度无关的像素 和dp类似
    --------------------------------------------------------------------------


    --------------------------------------------------------------------------
    资源位置 res/values/dimens.xml
    --------------------------------------------------------------------------
    xml格式 <resources>根元素
    <dimen name>value</dimen>
    --------------------------------------------------------------------------
    获得尺寸资源的方法 getResource().getDimension();
    --------------------------------------------------------------------------
    引用尺寸资源的格式 java代码中:R.dimen.dimen_name
    xml文件中:@dimen/dimen_name
    --------------------------------------------------------------------------

    以按钮为例:
    public void test(View view) {
    //尺寸资源
    int color1 = getResources().getColor(R.color.btntext_color);
    btn.setTextColor(color1);//设置button文本颜色
    int color2 = getResources().getColor(R.color.btnbg_color);
    btn.setBackgroundColor(color2);//设置button背景颜色

    float width = this.getResources().getDimension(R.dimen.button_width);
    float height = this.getResources().getDimension(R.dimen.button_height);
    btn.setWidth((int)width );
    btn.setWidth((int)height );

    }

    D)使用原始的xml数据
    如果项目中使用到了一些原始的xml文件,那么我们可以定义一些xml文件供工程使用。xml文件定义在工程的res/xml目录下。
    --------------------------------------------------------------------------
    资源位置 res/xml
    --------------------------------------------------------------------------
    xml文件格式 <resources>根节点<someElement name=value/>
    --------------------------------------------------------------------------
    获取xml资源的方法 getResources().getXml()
    --------------------------------------------------------------------------
    引用xml资源的格式 java代码中,R.xml.xml_name
    --------------------------------------------------------------------------
    以TextView、Button为例:
    1)在res目录下新建xml目录,并在xml下建立users.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <user username="ckr" phone="123456"></user>
    <user username="whf" phone="456789"></user>
    </resources>
    2)
    public void test(View view) {
    //xml资源
    String text = "";
    XmlResourceParser xrp = this.getResources().getXml(R.xml.users);

    while(xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
    if(xrp.getEventType() == XmlResourceParser.START_TAG) {
      String tagname = xrp.getName();
      if(tagname.equals("user")) {
      String username = xrp.getAttributeValue(0);
      String phone = xrp.getAttributeValue(1);
      text += "用户姓名:" + username + "; 电话:" + phone + "; ";
      }

      }
      xrp.next();
    }

      TextView tv = (TextView) findViewById(R.id.textview1);
      tv.setText(text);

    }


    E)使用drawable资源是一些图片资源,主要用来绘制屏幕,通过Resources.getDrawable()方法获得。
    drawable资源分为三类:Bitmap File(位图文件),Color Drawable(颜色),Nine-Patch Image(九片图片)。
    常用的是位图:android中支持的位图文件有png,jpg和gif。
    --------------------------------------------------------------------------
    资源位置 res/drawable/filename.jpg
    --------------------------------------------------------------------------
    获取位图资源的方法 java代码中:R.drawable.filename
    xml文件中,@drawable/filename
    --------------------------------------------------------------------------

    以两个Button为例设置背景图片,首先把图片(图片名不要以数字开头)拷贝到res目录下任意以drawable开头的目录下:
    public void test1(View view) {
      Drawable d = this.getResources().getDrawable(R.drawable.a);
      this.getWindow().setBackgroundDrawable(d);
    }

    public void test2(View view) {
      Drawable d = this.getResources().getDrawable(R.drawable.b);
      this.getWindow().setBackgroundDrawable(d);
    }
    若是在全局中设置:android:background="@drawable/c

  • 相关阅读:
    进程与线程的区别
    信号列表详解
    同步与互斥
    互斥锁
    读写锁
    Redis QPS测试
    从分布式锁来看redis和zookpeer!
    JVM虚拟机调参
    log4j.properties配置详解与实例
    生产者消费者(消费者要消费完才能退出)
  • 原文地址:https://www.cnblogs.com/UUUP/p/3983384.html
Copyright © 2011-2022 走看看