Android中的应用资源

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目录下的资源:

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

  2. 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获取实际值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值