一、 Assets介绍
Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径。我们可以通过AssetManager类来访问这些文件。
二、 Assets使用
主要使用类AssetManager和类assets
AssetManager主要由上下文Context或者ActivetyThead得到getAssets()------------->AssetManager有接口open()会连接assets_path + “assets” + filename来打开文件,同时把APK文件当作ZIP文件进行解压读取。
Java代码:
private Bitmap getImageFromAssetFile(String fileName){
Bitmap image = null;
try{
AssetManager am = context.getAssets();
InputStream is = am.open(fileName);
image = BitmapFactory.decodeStream(is);
is.close();
}catch(Exception e){
}
return image;
}
三、 大小限制
UNCOMPRESS_DATA_MAX定义限制文件大小不能大于1M,解决办法可以把文件放到SDCARD或者使用SQLITE数据库。还有使用Activity提供openFileOutput和openFileInput方法等。
四、 Assets类
AssetManager文件后会到得一个Assets的指针,同时AssetManager也能得到下面全部文件的列表等。
Assets主要接口:
virtual int openFileDescriptor(off_t* outStart, off_t* outLength) const = 0;
virtual ssize_t read(void* buf, size_t count) = 0;
virtual const void* getBuffer(bool wordAligned) = 0;