看着这个题目是不是很熟悉,没错,今天学习的就是assets文件夹下资源的一些使用方式。
1.sssets目录下放置的内容
- 大批量的初始化数据,需要在APP第一次安装时导入数据库。因为res/values目录下方的是键值对数据(如key-value),难以转换为数据库中存储的关系型数据。
- 工程源码要导出为JAR包,作为一个SDK给其他工程使用。因为res目录无法集成到jar包中,所以待集成的图片资源不可放在res目录。
- 如网页HTML这种需要保持原有格式的文件,不适合放在res目录中进行编译。
- 其余无法被Android系统识别的文件格式,如电子书的pdf、epub、djvu等等。
2.创建assets目录的位置
src/main目录下新建assets目录。
3.获取AssetManager对象方法
调用getAssets方法可获得AssetManager对象。
4.AssetManager相关方法
- list:列出指定目录下的文件与文件夹列表数组。
- open:打开资产文件,返回输入流InputStream对象。访问模式默认是AssetManager.ACCESS_STREAMING,表示流式访问,即顺序读取。
- close:关闭资产管理器。
5.从assets文件夹获取文字字符串示例
/**
* 从asset资产文件中获取文本字符串
* @param context
* @param fileName
* @return
*/
public static String getTxtFormAssets(Context context,String fileName){
String result = "";
try {
InputStream is = context.getAssets().open(fileName);
int lenght = is.available();
byte[] buffer = new byte[lenght];
is.read(buffer);
result = new String(buffer,"utf8");
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
6.从assets文件夹获取图片示例
/**
* 从asset资产文件中获取位图对象
* @param context
* @param fileName
* @return
*/
public static Bitmap getImgFromAssets(Context context,String fileName){
Bitmap bitmap = null;
try {
InputStream is = context.getAssets().open(fileName);
bitmap = BitmapFactory.decodeStream(is);
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}