Android资源文件在配置文件中的使用
Android资源文件大致可以分为两种:
第一种是res目录下存放的可编译的资源文件:
这种资源文件系统会在R.Java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可;
第二种是assets目录下存放的原生资源文件:
因为系统在编译的时候不会编译assets下的资源文件,所以我们不能通过R.XXX.ID的方式访问它们。那我么能不能通过该资源的绝对路径去访问它们呢?因为apk安装之后会放在/data/app/**.apk目录下,以apk形式存在,asset/res和被绑定在apk里,并不会解压到/data/data/YourApp目录下去,所以我们无法直接获取到assets的绝对路径,因为它们根本就没有。
还好android系统为我们提供了一个AssetManager工具类。
查看官方API可知,AssetManager提供对应用程序的原始资源文件进行访问;这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。
Android除了提供/res目录存放资源文件外,在/assets目录也会提供存放资源文件,在/assets目录下面不会在R.java里面自动生成ID,所以读取assets目录下面的资源文件需要提供路径,我们可以通过AssetManager类来访问这些文件。
assets文件夹资源的访问
assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。
1. 先在Activity里面调用getAssets() 来获取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。
3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close() 。
4.调用AssetManager.close() 关闭AssetManager。
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作
以下为从Raw文件中读取:
代码
public String getFromRaw(){
try {
InputStreamReader inputReader = new InputStreamReader( getResources().openRawResource(R.raw.test1));
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
} catch (Exception e) {
e.printStackTrace();
}
}
以下为直接从assets读取
代码
public String getFromAssets(String fileName){
try {
InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );
BufferedReader bufReader = new BufferedReader(inputReader);
String line="";
String Result="";
while((line = bufReader.readLine()) != null)
Result += line;
return Result;
} catch (Exception e) {
e.printStackTrace();
}
}
接下来举个例子
我们新建一个工程文件,命名为AssetsDemo。
然后建立一个布局文件,如下,很简单,无需我多介绍,大家一看就明白。
然后呢,我从网上找了段文字,存放在assets文件目录下,取名为health.txt 这就是今天我们要读取的文件啦。
health.txt可以自己写点内容放进assets文件夹下就可以了。
接下来,就是今天的重头戏,Android读取文件的核心代码。就直接贴代码了。
package com.assets.cn;
import java.io.InputStream;
import org.apache.http.util.EncodingUtils;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
public class AssetsDemoActivity extends Activity {
public static final String ENCODING = "UTF-8";
TextView tv1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1 = (TextView)findViewById(R.id.tv1);
tv1.setTextColor(Color.BLACK);
tv1.setTextSize(25.0f);
tv1.setText(getFromAssets("health.txt"));
}
//从assets 文件夹中获取文件并读取数据
public String getFromAssets(String fileName){
String result = "";
try {
InputStream in = getResources().getAssets().open(fileName);
//获取文件的字节数
int lenght = in.available();
//创建byte数组
byte[] buffer = new byte[lenght];
//将文件中的数据读到byte数组中
in.read(buffer);
result = EncodingUtils.getString(buffer, ENCODING);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
一、assets和raw目录
1. assets。assets类资源放在工程根目录的assets子目录下,它里面保存的是一些原始的文件,可以以任何方式来进行组织。这些文件最终会被原装不动地打包在apk文件中。如果我们要在程序中访问这些文件,那么就需要指定文件名来访问。例如,假设在assets目录下有一个名称为filename的文件,那么就可以使用以下代码来访问它:
- AssetManager am= getAssets();
- InputStream is = assset.open("filename");
2、raw。raw是res下的子目录, --raw。这类资源以任意格式的文件保存在res/raw目录下,它们和assets类资源一样,都是原装不动地打包在apk文件中的,不过它们会被赋予资源ID,这样我们就可以在程序中通过ID来访问它们。例如,假设在res/raw目录下有一个名称为filename的文件,并且它在编译的过程,被赋予的资源ID为R.raw.filename,那么就可以使用以下代码来访问它:
- Resources res = getResources();
- InputStream is = res .openRawResource(R.raw.filename);
更详细信息可参考大牛神作 http://blog.csdn.net/luoshengyang/article/details/8738877
二、其中properties资源文件的读取
1. 如果放入了assets文件夹中,可以如下打开:
Properties pro = new Properties();
InputStream is = context.getAssets().open("test.properties");
pro.load(is);
2. 如果放入到raw文件夹中,可以通过如下方式打开:
InputStream is = context.getResources().openRawResource(R.raw.test);
3. 如果没有上下文住处,则可用java传统的方式来打开:
Properties pro = new Properties();
pro.load(FileLoad.class.getResourceAsStream("/assets/test.properties")); //或者/res/raw/test.properties
二、从下图看出四种资源文件的格式与在配置文件中的使用
1.图片资源文件前缀名不能使用大写字母并且不能以数字开头
2.颜色资源文件、尺寸资源文件和字符资源文件所在的目录都必须是values,并且文件名是固定的,
如下图中示例
3.颜色资源文件、尺寸资源文件和字符资源文件的内容格式如下图示例
4.四种资源文件在布局资源文件中的使用如下图示例, 已经可以使用在AndroidManifest.xml文件中
二、Java代码操作资源文件
1.操作资源文件的对象的获取
Resources res = context.getResources(); (getResources()实现方法是类Context中声明的方法)
2.strings.xml资源文件被java代码操作
/** 第一种
String school =res.getString(R.string.school);// 成都中心大学
textView.setText(school);
**/
/** 第二种
String school = context.getString(R.string.school);
textView.setText(school);
**/
/**第三种
textView.setText(R.string.school);
*/
3.colors.xml 资源文件被java代码操作
int myRed =res.getColor(R.color.my_red);
context.textView.setTextColor(myRed);
4. dimens.xml资源文件被java代码操作
float bigSize = res.getDimension(R.dimen.bigSize);
textView.setTextSize(bigSize);
5.图片资源文件被java代码操作
(1)设置LinearLayout的背景
/**第一种
Drawable bc =res.getDrawable(R.drawable.bc);
linearLayout .setBackgroundDrawable(bc);//设置背景图片
*/
/**第二种
linearLayout .setBackgroundResource(R.drawable.bc);
*/
(2)设置ImageView的src
/**第一种
Drawable bc = res.getDrawable(R.drawable.xx);
imageView.setImageDrawable(bc);
*/
/**第二种
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.xx);
imageView.setImageBitmap(bitmap);
*/
/**第三种
imageView.setImageResource(R.drawable.xx);
*/
Android资源文件在配置文件中的使用相关推荐
- android h文件是什么文件,Android 资源文件
Android 资源文件 应用资源是指应用中与源代码分离的资源, 如图像, 音频文件以及任何与应用的视觉呈现有关的内容. 在 Android 项目中的每一项资源, SDK 构建工具都会定义一个唯一的整 ...
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组...
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...
- android调用资源文件配置,Android资源文件
应用资源是指应用中与源代码分离的资源,如图像.音频文件以及任何与应用的视觉呈现有关的内容.在Android项目中的每一项资源,SDK构建工具都会定义一个唯一的整形ID,可以通过ID对资源进行应用.提供 ...
- android xml引用系统资源文件,android开发教程之系统资源的使用方法 android资源文件...
一.颜色资源 1.颜色XML文件格式 //resources根元素 #000000 //color子元素 2.引用格式: java代码中:R.color.color_name (这是一个int型的数 ...
- spring配置xml文件_XML配置文件中的Spring配置文件
spring配置xml文件 我的上一个博客非常简单,因为它涵盖了我从Spring 3.0.x到Spring 3.1.x的轻松升级,最后我提到可以将Spring模式升级到3.1,以利用Spring的最新 ...
- java资源文件路径_Java 中获取资源(文件)的路径问题总结
Java 中获取资源(文件)的路径问题总结 首先,Java 中获取资源大体上可分为两种方式,基于 文件系统的 和 基于classpath的. 1. 基于文件系统的相对简单. 比如 构造一个File f ...
- 学习使用资源文件[11] - DLL 中的资源文件
本例将把一张 bmp 图片, 以资源文件的方式嵌入 dll, 然后再调用. 第一步: 建一个 DLL 工程, 如图: 然后保存, 我这里使用的名称都是默认的. 第二步: 建一个资源原文件, 如图: 编 ...
最新文章
- linux 文件拷贝并替换,Linux_cmd replace 文件替换使用说明,帮助信息: 复制代码 代码如 - phpStudy...
- linux的centos版本修改时间重启后无效的问题
- ML之回归预测之Lasso:利用Lasso算法对红酒品质wine数据集实现红酒口感评分预测(实数值评分预测)
- php 获取网卡mac
- MySQL 备份和恢复
- 在html中样式表的三种类型,css样式有哪几种类型?
- 如何实现分布式 java_Redis中是如何实现分布式锁的?
- 关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
- 【笔记】树莓派配置麦克风录音
- c语言标识符的语法规定,C语言语法规则.doc
- 数据挖掘实战—航空公司客户价值分析
- STM32单片机初学5-IIC通信驱动OLED屏幕
- 使用css3制作正六面体
- [URL ]pixiv.net p站用户账号注销网页网址(电脑web版)
- JSP中page指令
- 【叮咚买菜】叮咚抢菜使用教程
- java ps old gen_PSYoungGen /PSOldGen/PSPermGen区别
- Python--异常处理笔记
- Apollo6.0代码Lattice算法详解——Part4:计算障碍物ST/SL图
- [白馬下載器] MiPony 1.2.0 多语言免费版
热门文章
- mysql的root用户密码_MySQL的root用户密码忘了 , 该怎么办?
- python数据分析师工作内容_数据分析师日常工作是什么?
- python调用计算器卡死_Python+tkinter使用40行代码实现计算器功能
- 手把手教你做一辆mini平衡自行车!
- 为什么自己设计的嵌入式系统不如工业级产品稳定?
- 都是做嵌入式凭什么高薪offer归别人
- 图综合练习--拓扑排序_拓扑排序
- 软件测试与开发专业就业方向,学习软件测试后就业方向有哪些?
- nginx 指向一个文件夹_弄懂nginx的语法就是这么简单
- redis 上亿数据_票房上亿,稳居第一?肖战《诛仙》日本上映,真实数据到底怎样...