首页 > 系统 > Android > 正文

Android中的应用资源

2019-11-06 09:59:06
字体:
来源:转载
供稿:网友

Android的应用资源可以分成两类:

1.可以通过R资源的清单了直接访问应用中的资源,这类资源保存在res目录下

2.不可以通过R资源清单类直接通过索引进行访问,这类资源存储在assets目录下

Android SDK 会在编译应用的时候,在R类中给res目录下的文件创建索引项

创建Assets目录:

在AndroidStudio中,直接在当前的app中右键:

这里写图片描述

创建后的Assets:

这里写图片描述

AssetManager类的使用:

由于 SDK 会在编译应用的时候没有将Assets目录下的文件的索引添加的R类中,因此当我们想使用Assets目录中资源的时候,就不能使用R类来直接进行索引了。此时我们需要使用 AssetManager来管理assets目录下的资源。

官方Api文档对AssetManager的描述:

这个类提供了一个低级别API允许你打开并读取一个原始的文件与应用程序捆绑在一起,作为一个简单的流的字节数。

提供的方法:

这里写图片描述

可以通过下面两个常用方法来访问Assets目录下的资源:

InputStream open(String fileName):通过文件名来获取原始文件的输入流

AssetFileDescriptor openFd(String fileName) :通过文件名来获取原始资源对应的AssetFileDescriptor

在ImageView中显示Assets目录下的图片:

运行效果:

这里写图片描述

示例代码:

public class AssetsActivity extends AppCompatActivity { PRivate ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_assets); imageView = (ImageView) findViewById(R.id.imageView_showQr); try{ //获取一个AssetManager AssetManager assets = getAssets(); //通过open()方法获取文件名对应的原始二进制输入流 InputStream is = assets.open("girl.jpg"); imageView.setImageBitmap(BitmapFactory.decodeStream(is)); is.close(); } catch (IOException e) { e.printStackTrace(); } }}

res目录下的各个文件夹存储的资源类型:

这里写图片描述

当我们想获取资源id所对应的实际值得时候,可以通过Resources类来完成:

Resources resources = getResources(); String appName = resources.getString(R.string.app_name);

Resources类提供了大量的方法来根据资源ID获取实际值


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表