第14/15讲- Android资源管理
第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资源管理的更多相关文章
- 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化
第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...
- JVM基础系列第15讲:JDK性能监控命令
查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...
- 15类Android通用流行框架
15类Android通用流行框架 Android流行框架 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 图片加载 Android Universal Image Loader 一个 ...
- (转载)15 个 Android 通用流行框架大全
15 个 Android 通用流行框架大全 时间:2017-03-20 11:36来源:未知 作者:admin 点击: 2089 次 15 个 Android 通用流行框架大全 1. 缓存 Dis ...
- 斯坦福NLP课程 | 第15讲 - NLP文本生成任务
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- js如何判断一组数字是否连续,得到一个临时数组[[3,4],[13,14,15],[17],[20],[22]];
var arrange = function(arr){ var result = [], temp = []; arr.sort(function(source, dest){ return sou ...
- [ionic开源项目教程] - 第15讲 ionic用户个人中心登录注册的实现
第15讲 ionic用户个人中心登录注册的实现 这一讲包括登陆.注册.个人中心.个人资料页面的实现. 在一讲的改动有四个地方: 在config.js里配置接口地址 完善个人中心的服务层(service ...
- 第13讲- Android之消息提示Notification
第13讲 Android之消息提示Notification .Notification Notification可以理解为通知的意思一般用来显示广播信息,通知可以显示到系统的上方的状态栏(status ...
- 第12讲- Android之消息提示Toast
第12讲 Android之消息提示Toast .Toast Toast 是一个 View 视图,在应用程序上浮动显示少量的信息给用户,它永远不会获得焦点,不影响用户的输入等操作,主要用于向用户显示一些 ...
随机推荐
- MySql 查询表字段数
MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='test_cases' AND tab ...
- Oracle CheckPoint进程
在实例经过分配内存结构,加载控制文件后,然后要打开数据库的时候,需要做到控制文件,数据文件,联机重做日志保持相互状态一致性,数据库才可以打开.当数据库发生实例不正常关闭时(比如系统掉电或者Shutdo ...
- 老生常谈的Javascript作用域问题
在前端学习中,作用域这个问题一直被广泛提起,什么是作用域,什么又是作用域链?在Javascript中,怎么去理解这些概念都是学好这门语言的关键,所以在学习前端开发的过程中,我需要也很有必要去学习和总结 ...
- BZOJ 2243 SDOI 2011染色
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 算法讨论: 树链剖分把树放到线段树上.然后线段树的每个节点要维护的东西有左端点的颜色 ...
- poj1159 dp(滚动数组优化)
H - 简单dp 例题扩展 Crawling in process... Crawling failed Time Limit:3000MS Memory Limit:65536KB ...
- UVa 679 小球下落 简单模拟题,树
题目大意:给你一个完全二叉树,并且给他们编号,编号规则为左子树为2*k,右子树为2*k+1,每一个节点 上都有一个开关,初始时开关都处于关闭状态,小球碰到节点就会改变该点的开关的状态.然后给你I个小球 ...
- 洛谷 P3367 【模板】并查集
P3367 [模板]并查集 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入输出格式 输入格式: 第一行包含两个整数N.M,表示共有N个元素和M个操作. 接下来M行,每行包含三个整数 ...
- CSS3 基础知识
CSS3 基础知识1.边框 1.1 圆角 border-radius:5px 0 0 5px; 1.2 阴影 box-shadow:2px 3px 4px 5px rgba(0,0,0 ...
- jquery navi
/// <reference path="../global.js" /> /********************************************* ...
- eclipse修改字体
修改xml字体: window→Preferences→General→Colors and Fonts→Basic→Text Font