asset与res、raw的不同

assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中。assets支持任意深度的子目录。在编译的时候不会编译assets下的资源文件,且这些文件不会生成任何资源ID。

res:用于存放应用程序的资源(如图标、GUI布局等)

raw:存放通用的文件, 该文件夹内的文件将不会被编译成二进制文件,按原样复制到设备上。

访问assets目录下的资源文件

可以通过AssetManager类来访问assets目录下的资源文件。

获得AssetManager实例的方法:

Context.getAssets()

getResources().getAssets()

访问asset文件夹下的文件(比如文本、图片,不能是文件夹):

Context.getAssets().open(“sample.txt”)

WebView加载assets下的html文件:

WebView.loadUrl(“file:///android_asset/sample.html”);

使用assets目录下的图片资源:

InputStream is=getAssets().open("Image/sample.jpg");

Bitmap bitmap=BitmapFactory.decodeStream(is);

imgShow.setImageBitmap(bitmap);

播放assets目录下的音乐

//openFd(String fileName)方法根据文件名来获取原始资源对应的AssetFileDescriptor资源描述

AssetFileDescriptor afd = am.openFd(music);

mPlayer.reset();

// 使用MediaPlayer加载指定的声音文件。

//getStartOffset():返回asset中项的数据字节开始偏移

//getLength():返回该asset中项的数据的总字节数。

mPlayer.setDataSource(afd.getFileDescriptor(),

afd.getStartOffset(), afd.getLength());

// 准备声音

mPlayer.prepare();

// 播放

mPlayer.start();

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐