- 浏览: 202702 次
文章分类
最新评论
android从assets和res文件夹中读取资源
1. 相关文件夹介绍
目录 Directory |
资源类型 Resource Types |
res/anim/ |
XML文件,它们被编译进逐帧动画(frame by frame animation)或补间动画(tweened animation)对象 |
res/drawable/ |
.png、.9.png、.jpg文件,它们被编译进以下的Drawable资源子类型中: 要获得这种类型的一个资源,可以使用Resource.getDrawable(id) 位图文件 9-patches(可变尺寸的位图) 为了获取资源类型,使用mContext.getResources().getDrawable(R.drawable.imageId) 注意:放在这里的图像资源可能会被aapt工具自动地进行无损压缩优化。比如,一个真彩色但并不需要256色的PNG可能会被转换为一个带调色板的8位PNG。这使得同等质量的图片占用更少的资源。所以我们得意识到这些放在该目录下的二进制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(bitmap),请把图像文件放在 res/raw/目录下,这样可以避免被自动优化。 |
res/layout/ |
被编译为屏幕布局(或屏幕的一部分)的XML文件。参见布局声明(Declaring Layout) |
res/values/ |
可以被编译成很多种类型的资源的XML文件。 注意 :不像其他的res/文件夹,它可以保存任意数量的文件,这些文件保存了要创建资源的描述,而不是资源本身。XML元素类型控制这些资源应该放在R类的什么地方。 尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件(文件命名的惯例是将元素类型包含在该名称之中): array.xml定义数组 colors.xml定义color drawable和颜色的字符串值(color string values)。使用Resource.getDrawable()和Resources.getColor()分别获得这些资源。 dimens.xml定义尺寸值(dimension value)。使用Resources.getDimension()获得这些资源。 strings.xml定义字符串(string)值。使用Resources.getString()或者Resources.getText()获取这些资源。getText()会保留在UI字符串上应用的丰富的文本样式。 styles.xml定义样式(style)对象。 |
res/xml/ |
任意的XML文件,在运行时可以通过调用Resources.getXML()读取。 |
res/raw/ |
直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。 |
2.自动生成的R class
3.在代码中使用资源
- //Loadabackgroundforthecurrentscreenfromadrawableresource.
- this.getWindow().setBackgroundDrawableResource(R.drawable.my_background_image);
- //WRONGSendingastringresourcereferenceintoa
- //methodthatexpectsastring.
- this.getWindow().setTitle(R.string.main_title);
- //RIGHTNeedtogetthetitlefromtheResourceswrapper.
- this.getWindow().setTitle(Resources.getText(R.string.main_title));
- //Loadacustomlayoutforthecurrentscreen.
- setContentView(R.layout.main_screen);
- //SetaslideinanimationforaViewFlipperobject.
- mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
- R.anim.hyperspace_in));
- //SetthetextonaTextViewobject.
- TextViewmsgTextView=(TextView)findViewByID(R.id.msg);
- msgTextView.setText(R.string.hello_message);
- //在屏幕上显示标准应用程序的图标
- publicclassMyActivityextendsActivity{
- publicvoidonStart(){
- requestScreenFeatures(FEATURE_BADGE_IMAGE);
- super.onStart();
- setBadgeResource(android.R.drawable.sym_def_app_icon);
- }
- }
- //应用系统定义的标准"绿色背景"视觉处理
- publicclassMyActivityextendsActivity
- publicvoidonStart(){
- super.onStart();
- setTheme(android.R.style.Theme_Black);
- }
- }
4. xml文件内引用资源
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="hello">HelloWorld,HelloDemo!</string>
- </resources>
5. 替换资源(为了可替换的资源和配置)
6. Color Value
- <colorname="color_name">#color_value</color>
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <colorname="opaque_red">#f00</color>
- <colorname="translucent_red">#80ff0000</color>
- </resources>
7.Color Drawables
- <drawablename="color_name">color_value</drawable>
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <drawablename="opaque_red">#f00</drawable>
- <drawablename="translucent_red">#80ff0000</drawable>
- </resources>
8. 图片
9. dimension
- <dimenname="dimen_name">dimen_value单位</dimen>
Java: float dimen = Resources.getDimen(R.dimen.some_name)
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <dimenname="one_pixel">1px</dimen>
- <dimenname="double_density">2dp</dimen>
- <dimenname="sixteen_sp">16sp</dimen>
- </resources>
10. string
- //不使用转义符则需要用双引号包住整个string
- <stringname="good_example">"This'llwork"</string>
- //使用转义符
- <stringname="good_example_2">This\'llalsowork</string>
- //错误
- <stringname="bad_example">Thiswon'twork!</string>
- //错误不可使用html转义字符
- <stringname="bad_example_2">XMLencodingswon'tworkeither!</string>
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="simple_welcome_message">Welcome!</string>
- <stringname="styled_welcome_message">Weare<b><i>so</i></b>gladtoseeyou.</string>
- </resources>
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textAlign="center"
- android:text="@string/simple_welcome_message"/>
- //AssignastyledstringresourcetoaTextViewonthecurrentscreen.
- CharSequencestr=getString(R.string.styled_welcome_message);
- TextViewtv=(TextView)findViewByID(R.id.text);
- tv.setText(str);
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="search_results_resultsTextFormat">%1$dresultsfor<b>&quot;%2$s&quot;</b></string>
- </resources>
- //title是我们想赋值给%2$s的字符串
- StringescapedTitle=TextUtil.htmlEncode(title);
- StringresultsTextFormat=getContext().getResources().getString(R.string.search_results_resultsTextFormat);
- StringresultsText=String.format(resultsTextFormat,count,escapedTitle);
- CharSequencestyledResults=Html.fromHtml(resultsText);
11. assets文件夹资源的访问
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作
以下为从Raw文件中读取:
代码
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();
}
}
当然如果你要得到内存流的话也可以直接返回内存流!
1. 相关文件夹介绍
目录 Directory |
资源类型 Resource Types |
res/anim/ |
XML文件,它们被编译进逐帧动画(frame by frame animation)或补间动画(tweened animation)对象 |
res/drawable/ |
.png、.9.png、.jpg文件,它们被编译进以下的Drawable资源子类型中: 要获得这种类型的一个资源,可以使用Resource.getDrawable(id) 位图文件 9-patches(可变尺寸的位图) 为了获取资源类型,使用mContext.getResources().getDrawable(R.drawable.imageId) 注意:放在这里的图像资源可能会被aapt工具自动地进行无损压缩优化。比如,一个真彩色但并不需要256色的PNG可能会被转换为一个带调色板的8位PNG。这使得同等质量的图片占用更少的资源。所以我们得意识到这些放在该目录下的二进制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(bitmap),请把图像文件放在 res/raw/目录下,这样可以避免被自动优化。 |
res/layout/ |
被编译为屏幕布局(或屏幕的一部分)的XML文件。参见布局声明(Declaring Layout) |
res/values/ |
可以被编译成很多种类型的资源的XML文件。 注意 :不像其他的res/文件夹,它可以保存任意数量的文件,这些文件保存了要创建资源的描述,而不是资源本身。XML元素类型控制这些资源应该放在R类的什么地方。 尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件(文件命名的惯例是将元素类型包含在该名称之中): array.xml定义数组 colors.xml定义color drawable和颜色的字符串值(color string values)。使用Resource.getDrawable()和Resources.getColor()分别获得这些资源。 dimens.xml定义尺寸值(dimension value)。使用Resources.getDimension()获得这些资源。 strings.xml定义字符串(string)值。使用Resources.getString()或者Resources.getText()获取这些资源。getText()会保留在UI字符串上应用的丰富的文本样式。 styles.xml定义样式(style)对象。 |
res/xml/ |
任意的XML文件,在运行时可以通过调用Resources.getXML()读取。 |
res/raw/ |
直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。 |
2.自动生成的R class
3.在代码中使用资源
- //Loadabackgroundforthecurrentscreenfromadrawableresource.
- this.getWindow().setBackgroundDrawableResource(R.drawable.my_background_image);
- //WRONGSendingastringresourcereferenceintoa
- //methodthatexpectsastring.
- this.getWindow().setTitle(R.string.main_title);
- //RIGHTNeedtogetthetitlefromtheResourceswrapper.
- this.getWindow().setTitle(Resources.getText(R.string.main_title));
- //Loadacustomlayoutforthecurrentscreen.
- setContentView(R.layout.main_screen);
- //SetaslideinanimationforaViewFlipperobject.
- mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
- R.anim.hyperspace_in));
- //SetthetextonaTextViewobject.
- TextViewmsgTextView=(TextView)findViewByID(R.id.msg);
- msgTextView.setText(R.string.hello_message);
- //在屏幕上显示标准应用程序的图标
- publicclassMyActivityextendsActivity{
- publicvoidonStart(){
- requestScreenFeatures(FEATURE_BADGE_IMAGE);
- super.onStart();
- setBadgeResource(android.R.drawable.sym_def_app_icon);
- }
- }
- //应用系统定义的标准"绿色背景"视觉处理
- publicclassMyActivityextendsActivity
- publicvoidonStart(){
- super.onStart();
- setTheme(android.R.style.Theme_Black);
- }
- }
4. xml文件内引用资源
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="hello">HelloWorld,HelloDemo!</string>
- </resources>
5. 替换资源(为了可替换的资源和配置)
6. Color Value
- <colorname="color_name">#color_value</color>
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <colorname="opaque_red">#f00</color>
- <colorname="translucent_red">#80ff0000</color>
- </resources>
7.Color Drawables
- <drawablename="color_name">color_value</drawable>
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <drawablename="opaque_red">#f00</drawable>
- <drawablename="translucent_red">#80ff0000</drawable>
- </resources>
8. 图片
9. dimension
- <dimenname="dimen_name">dimen_value单位</dimen>
Java: float dimen = Resources.getDimen(R.dimen.some_name)
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <dimenname="one_pixel">1px</dimen>
- <dimenname="double_density">2dp</dimen>
- <dimenname="sixteen_sp">16sp</dimen>
- </resources>
10. string
- //不使用转义符则需要用双引号包住整个string
- <stringname="good_example">"This'llwork"</string>
- //使用转义符
- <stringname="good_example_2">This\'llalsowork</string>
- //错误
- <stringname="bad_example">Thiswon'twork!</string>
- //错误不可使用html转义字符
- <stringname="bad_example_2">XMLencodingswon'tworkeither!</string>
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="simple_welcome_message">Welcome!</string>
- <stringname="styled_welcome_message">Weare<b><i>so</i></b>gladtoseeyou.</string>
- </resources>
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textAlign="center"
- android:text="@string/simple_welcome_message"/>
- //AssignastyledstringresourcetoaTextViewonthecurrentscreen.
- CharSequencestr=getString(R.string.styled_welcome_message);
- TextViewtv=(TextView)findViewByID(R.id.text);
- tv.setText(str);
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="search_results_resultsTextFormat">%1$dresultsfor<b>&quot;%2$s&quot;</b></string>
- </resources>
- //title是我们想赋值给%2$s的字符串
- StringescapedTitle=TextUtil.htmlEncode(title);
- StringresultsTextFormat=getContext().getResources().getString(R.string.search_results_resultsTextFormat);
- StringresultsText=String.format(resultsTextFormat,count,escapedTitle);
- CharSequencestyledResults=Html.fromHtml(resultsText);
11. assets文件夹资源的访问
需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作
以下为从Raw文件中读取:
代码
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();
}
}
当然如果你要得到内存流的话也可以直接返回内存流!
相关推荐
在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的。assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译,可以存放一些图片,html,js, css等文件。 介绍...
android从assets和res中读取文件.pdf
Android assets 和 res/raw 区别。读取本地网页,读取文本字体样式,读取视频。
Android 中获取Assets目录下的文件和子目录下的文件,获取raw文件夹下的文件
今天用到了提示音,读取 android 文件夹 assets 下的音频,写了个demo,可以直接拿去用;文件夹下音频大小好像不能超过1M,否则可能不能读取;
Android 加载assets文件夹的文本文件 图片
这是一个android下对assets文件夹的使用,实现了对外部导入数据库文件的操作,查询和删除功能
很多时候我们需要将资源文件以XML形式放在assets文件夹下,我写的这个demo是一个比较通用的获取xml输入流,解析xml获取想要数据的方法,希望对大家有帮助。
实现从Android项目下的assets中获取ini文件的指定内容的功能
android 从assets获取图片
Java和JNI读取android apk里assets文件夹示例demo,参见博客详解: http://blog.csdn.net/yanzi1225627/article/details/20577059
Unity Android StreamingAssets读图片和读文本事例
Android读取assets下面文件的代码例子。用于演示读取assets目录下文本文件和图片文件,以及加载html网页的功能。
本demo是结合博客的资源,如有不懂请去看博客 http://blog.csdn.net/u013895206 ,文章是:android 使用gradle导出jar包,并包含assets资源文件夹。谢谢!
Android读取 assets 与 sdcard 中的 ini 文件与图片,通过Android原生方式实现
Android 读取raw、assets中的txt文件 https://blog.csdn.net/qq_31939617/article/details/80911124
读取Assets资源文件 Json解析
获取assets文件夹下资源 获取assets文件夹下资源 详细介绍:https://blog.csdn.net/Greathfs/article/details/52123984
NULL 博文链接:https://flycatdeng.iteye.com/blog/2156551