14/15讲 Android资源管理

Android中的资源是指非代码部分,比如图片、MP3,字符串,XML文件等。在一个android工程中,res和assets是用来保存资源文件的。

res和assets的区别

1.res中的资源可以通过R资源类访问。

res中包含各种文件夹,对资源进行分类。(比较常用)

anim(xml动画文件),drawable(图片), layout(布局文件), menu(菜单), raw(二进制文件), values(常量值), xml

2. assets中保存不进行编译加工的原始文件,例如MP3文件,Android程序不能通过R类直接访问。必须通过AssetManager类以二进制流的形式来读取。

使用资源的两种一般方式

1.   在代码中使用context的getResources()方法得到Resources对象,该对象提供了获得各种资源的方法;

2.   在其他资源中引用资源的一般格式:

(1)      @[包名称:]资源类型/资源名称

(2)      R.资源类型.资源名称

一、 颜色资源

颜色值的定义是通过RGB三原色来定义的。

资源位置

res/values/colors.xml

获得颜色方法

Resources.getColor()

引用资源格式

Java代码中:R.color.color_name

XML文件中:@color/color_name

颜色XML文件格式

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

<resources>

<color name="color_name">#color_value</color>

</resources>

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

<resources>

<color name="red">#FF0000</color><!--红色 -->

<color name="orange">#FFA500</color><!--橙色 -->

<colorname="yellow">#FFFF00</color><!--黄色 -->

<color name="green">#008000</color><!--绿色 -->

<color name="cyan">#00FFFF</color><!--青色 -->

<color name="blue">#0000FF</color><!--蓝色 -->

<color name="purple">#800080</color><!--紫色 -->

<color name="black">#000000</color><!--黑色 -->

<color name="white">#FFFFFF</color><!--白色 -->

<color name="gold">#FFD700</color><!--金色 -->

<color name="skyblue">#87CEEB</color><!--天蓝色 -->

<color name="gray">#808080</color><!--灰色 -->

</resources>

首先在res中values下建立colors.xml文件

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

<resources>

<color name="bg_color">#ff0000</color>

<color name="test_color">#00ff00</color>

</resources>

颜色资源的使用:

(a)      在XML文件中

在布局文件layout中使用:android:textColor="@color/test_color"

全局layout中背景颜色android:background="@color/bg_color"

(b)      在java代码中

在布局文件中添加一个button,为此button添加android:onClick="test"。

在MainActivity.java中使用

public void test(View view){

int color = this.getResources().getColor(R.color.bg_color);

Toast.makeText(this, ""+color, 1).show();

this.getWindow().setBackgroundDrawableResource(R.color.bg_color);

}

二、字符串资源

资源位置

res/values/strings.xml

获得string方法

Context.getString()

引用资源格式

Java代码中:R.string.string_name

XML文件中:@ string/string_name

颜色XML文件格式

<resources>

<string name=" string _name"> string _value</string>

</resources>

首先在res中values下strings.xml文件

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

<resources>

<string name="welcome">欢迎,-_-</string>

</resources>

颜色资源的使用:

(a )在XML文件中

在布局文件layout中使用:android:text="@string/welcome"

(b )在java代码中

在布局文件中添加一个button,为此button添加 android:onClick="test"。

在MainActivity.java中使用

public voidtest(View view){

String str = this.getString(R.string.welcome);

Toast.makeText(this,str, 1).show();

Button button =(Button) findViewById(R.id.button1);

button.setText(R.string.welcome);

}

三、尺寸资源

可以使用一些常用的尺寸单位来定义一些文字尺寸,试图组件的宽和高等。

尺寸资源是一个数字类型的数据,被定义在 res/values/dimens.xml文件中。

单位表示

单位名称

说明

px

像素

屏幕真是像素

in

英寸

基于屏幕的物理英寸

dp

与密度无关的像素

相对屏幕物理密度的抽象单位

sp

与比例无关的像素

资源位置

res/values/dimens.xml

获得尺寸资源的方法

getResources().getDimension(   )

引用资源格式

Java代码中:R. dimen. dimen_name

XML文件中:@dimen/dimen_name

XML文件格式

<resources>

<dimen name=" dimen _name"> dimen _value</dimen>

</resources>

在dimen.xml中

<dimen name="text_width">150px</dimen>

<dimen name="text_height">100px</dimen>

<dimen name="button_width">30mm</dimen>

<dimen name="button_height">10mm</dimen>

在activity_main.xml中

android:width="@dimen/text_width"

android:height="@dimen/text_height"

android:width="@dimen/button_width"

android:height="@dimen/button_height"

android:onClick="test"

在Main_Activity.java中

publicvoid test(View view){

Buttonbutton = (Button) findViewById(R.id.button1);

floatwidth=this.getResources().getDimension(R.dimen.text_width);

floatheight=this.getResources().getDimension(R.dimen.text_height);

button.setWidth((int)width);

button.setHeight((int)height);

}

四、使用原始的XML数据

Android允许将任意的xml文件用作资源。放在res\xml\子目录下

资源位置

res\xml\

获得尺寸资源的方法

getResources().getXml(   )

引用资源格式

Java代码中:R. xml. xml_name

XML文件中:@ xml/xml _name

XML文件格式

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

<resources>

<someElement name=value/>

<someElement name=value></someElement>

</resources>

在res文件夹中新建一个xml文件夹,在此文件夹下新建一个users.xml文件,如下

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

<resources>

<user name="Liu" phone="18070510481"></user>

<user name="Gong" phone="182333666636"/>

</resources>

新建一个Button,并为之添加android:onClick="test"

在MainActivity.java文件中编写

public voidtest(View view){

Stringtext = "";

//根据XML资源的ID获取解析该资源的解析器

//XmlResourceParser是XmlPullParser的子类

XmlResourceParserxrp = this.getResources().getXml(R.xml.users);              //获取xml

try{

while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){  //是否到XML文档的结尾处

if(xrp.getEventType()==XmlResourceParser.START_TAG){               //如果遇到了开始标签

Stringtagname=xrp.getName();                                                    //获取该标签的标签名

if(tagname.equals("user")){

Stringuname = xrp.getAttributeValue(0);                //根据属性索引来获取属性值

Stringphone = xrp.getAttributeValue(1);

text+="姓名:"+uname+";电话:"+phone+";\n";

}

}

xrp.next();                  //获取解析器的下一个事件

}

TextView textView = (TextView) findViewById(R.id.textView1);

textView.setText(text);

}

catch(XmlPullParserExceptione){   e.printStackTrace();          }

catch(IOException e){      e.printStackTrace();          }

}

五、图片资源

资源位置

res/drawable/file_name.png /file_name.jpg / file_name.gif

获得尺寸资源的方法

Resources.get Drawable()

引用资源格式

Java代码中:R.drawable.file_name

XML文件中:@[package:]drawable/file_name

drawable资源是一些图片或者颜色资源,主要用来绘制屏幕。

drawable资源分为三类:Bitmap File(位图文件)、ColorDrawable(颜色)、Nine-Patch Image(九片图片)

这里只讲述常用的位图文件的使用。

Android中支持的位图文件包括:png, jpg,gif

Android不允许图片资源的文件名中出现大写字母,且不能以数字开头。

Drawabledrawable=this.getResources().getDrawable(R.drawable.a1);

this.getWindow().setBackgroundDrawable(drawable);

也可以直接在layout中进行背景设置

android:background="@drawable/a1"

第14/15讲- Android资源管理的更多相关文章

  1. 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化

    第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...

  2. JVM基础系列第15讲:JDK性能监控命令

    查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...

  3. 15类Android通用流行框架

    15类Android通用流行框架 Android流行框架 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 图片加载 Android Universal Image Loader 一个 ...

  4. (转载)15 个 Android 通用流行框架大全

    15 个 Android 通用流行框架大全 时间:2017-03-20 11:36来源:未知 作者:admin 点击: 2089 次 15 个 Android 通用流行框架大全   1. 缓存 Dis ...

  5. 斯坦福NLP课程 | 第15讲 - NLP文本生成任务

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...

  6. js如何判断一组数字是否连续,得到一个临时数组[[3,4],[13,14,15],[17],[20],[22]];

    var arrange = function(arr){ var result = [], temp = []; arr.sort(function(source, dest){ return sou ...

  7. [ionic开源项目教程] - 第15讲 ionic用户个人中心登录注册的实现

    第15讲 ionic用户个人中心登录注册的实现 这一讲包括登陆.注册.个人中心.个人资料页面的实现. 在一讲的改动有四个地方: 在config.js里配置接口地址 完善个人中心的服务层(service ...

  8. 第13讲- Android之消息提示Notification

    第13讲 Android之消息提示Notification .Notification Notification可以理解为通知的意思一般用来显示广播信息,通知可以显示到系统的上方的状态栏(status ...

  9. 第12讲- Android之消息提示Toast

    第12讲 Android之消息提示Toast .Toast Toast 是一个 View 视图,在应用程序上浮动显示少量的信息给用户,它永远不会获得焦点,不影响用户的输入等操作,主要用于向用户显示一些 ...

随机推荐

  1. JAVA中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法.冒泡法.选择排序法.插入排序法. 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进 ...

  2. testng xml 示例

    TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.php 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...

  3. qt动态更新界面的菜鸟代码,请指出

    qt简单界面更新代码(菜鸟级)(部分代码) self.timers_1=QtCore.QTimer(self) self.timers_1.timeout.connect(self.min_1) se ...

  4. Open Session In View

    Open Session In View模式的主要思想是:在用户的每一次请求过程始终保持一个Session对象打开着 实现步骤: 步骤一.创建一个Web项目,创建包cn.happy.util,创建Hi ...

  5. Hacker(23)----破解常见文件密码

    Win7中,office文档.压缩文件等都是常见的文件,这些文档含有重要的信息,即使用户为这些文件设置了密码,黑客也会有办法破解. 一.破解office文档密码 破解office文档密码常用工具是Ad ...

  6. java基础之集合

    集合的定义,集合的应用,集合的分类,集合的遍历,集合的特性

  7. Asp.Net EF Code First 简单入门

    今天在上班期间花了点时间学习了一下微软的EntityFramework Code First技术,这篇文章只是简单的入门,不多废话,下面直入主题. 一.首先添加一个解决方案,接着添加一个web网站,D ...

  8. IL(Intermediate Language)

    释义: IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU ...

  9. ios文件读取

    /* *  @brief 沙盒下的各种文件 */ - (void)getPaths { /** *  @brief 获取沙盒的路径 */ NSString * HomeDirectory = NSHo ...

  10. 使用Flex 和 Red5开发简单视频直播功能

    Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器.桌面和操作系统.虽然只能使用 ...