A007-assets资源

本节课开始讲Android中所用到的一些资源,首先来讲assets资源,它是Android的其中一种资源,跟raw和drawable资源有点不同,我们获取这个目录下的文件需要指定文件的路径,它里面的文件不会映射到R.java文件中,而res目录下的资源文件时会自动映射到R.java中,我们打包成apk的时候,assets目录下的文件不会被编译成二进制文件,而是直接打包到apk文件中。我们可以打包项目成apk,然后更改它的后缀名为.zip,再进行解压,可以看到assets目录的文件。

上面是对assset资源的一些介绍,我们实际开发中如何获取assets目录下的资源呢:

1. 获取文件输入流

Context.getAssets().open(“filename”)

2. assets资源的绝对路径

file:///android_asset/文件名

比如在assets目录下有个test.txt文件,可以通过下面这种方式获取:

 assetsText.setText(getFromAssets("test.txt"));
 private String getFromAssets(String filename) {
        String result = "";
        try {
            InputStream in = getResources().getAssets().open(filename);
            int length = in.available();

            byte[] buffer = new byte[length];

            in.read(buffer);

            result = EncodingUtils.getString(buffer, "UTF-8");

        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

思考:这里需要大家去区分Android的一些资源,像assets这种资源是不会被编译成字节码,然而像raw、drawable资源是Android指定的资源,可以通过R.xxx.filename来进行引用,如果在res自定义一个目录是不可以通过这种方式获取资源,引用的话会R.xxx.xxx cannot be resolved” 的错误。

这里补充一点就是,我们使用AS开发不会默认给我们创建assets目录,需要我们按一下方法去创建目录:

然后我们创建的项目有个.iml的配置文件,会有相应的配置,大家下去可以研究一下

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-10 19:16:54

A007-assets资源的相关文章

android res与assets资源的区别

android应用可以将资源存储在两个目录:res和assets.其中res目录中的资源只能存储在相应的 子目录(如res/layout.res/values等)中,不能直接将资源存储在res目录中.assets目录中的 资源可以任意存放,也可以建立任意层次的子目录.res和assets资源的主要区别如下. 1.引用资源的方式不同 res目录中的所有资源都会在R类的相应子类中生成对应的int类型变量,需要使用这些变量 来引用资源.例如res/layout/main.xml是布局文件资源,会在R.

Android之assets资源

assets目录下存放的原生资源文件,通过getAssets()方法获取. 使用: InputStream inputStream; try { inputStream = getAssets().open("data/chat.isp"); String json = StringUtil.readTextFile(inputStream); JSONArray array = new JSONArray(json); backModel result = null; for (in

android raw与assets资源

*res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. *res/raw和assets的不同点: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename:assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类. 2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹 *读取文件资源:

Android学习--Assets资源文件读取及AssetManager介绍

APK安装过程 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录,Android系统在sdcard上为每一个应用分配了存储路径:/sdcard/Android/data/$(应用的包路径),该路径可以通过 context.getExternalFilesDir 得到,一般应用卸载的时候,该目录也会随之被删除. Android资源文件分为两类: 第一种是res目录下存放

Android的xml/assets/raw资源使用具体解释

一.assets/xml/raw资源介绍 1.assets资源文件夹:assets文件夹下存放的资源代表应用无法直接訪问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,訪问方式是通过文件名称而不是资源ID.应用程序通过AssetManager以的字节流的形式来读取资源文件.assets与res/raw的差别是assets支持随意深度的子文件夹.这些资源文件不会生成不论什么资源ID. Android应用訪问assets文件夹资源过程例如以下: (1)先在Activity中调用

android资源:菜单和assets

1.菜单(menu) 1.menu\menu.xml中定义 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="com.mytest.testbase.MainActivity" > <item android:id="

Android的xml/assets/raw资源使用详解

一.assets/xml/raw资源介绍 1.assets资源目录:assets目录下存放的资源代表应用无法直接访问的原生资源,这些文件将原封不动的存储到设备上,不会被编译为二进制形式,访问方式是通过文件名而不是资源ID.应用程序通过AssetManager以的字节流的形式来读取资源文件.assets与res/raw的区别是assets支持任意深度的子目录,这些资源文件不会生成任何资源ID.Android应用访问assets文件夹资源步骤如下: (1)先在Activity中调用getAssets

如何发布带静态资源的库——android 篇

1.首先要使用 android sdk 提供的命令行工具处理已有的项目: 1 cd YourProjectDir 2 android update project -p ./ 2.上一步生成的 build.xml 中,会有一个对 custom_rules.xml 的引用,这个引用是可选的,没有 custom_rules.xml 也不会影响编译.但这个文件正好是用来添加自定义编译步骤的,要把 assets 资源添加到 jar 包中,就要创建这个文件.在工程目录下创建 custom_rules.xm

Android资源管理框架(Asset Manager)简介和学习计划

Android该应用程序包括两个部分组成的:代码和资源. 资源主要是与UI相关的东西,例如UI布局.和其他字符串和照片.代码和资源可以使独立的应用程序来组织的实际需求的基础上,在执行的时候UI.,就能够支持不同的UI布局.这样的特性使得应用程序在执行时能够适应不同的屏幕大小和密度.以及不同的国家和语言等. 在本文中.我们就简要介绍Android的资源管理框架.以及制定学习计划. 在软件开发中.说到代码与资源分离.最easy想到的可能就是Web开发了. 在Web开发中,我们通常会通过CSS文件来描

美团Android资源混淆保护实践

前言 Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译.破解.汉化等等,这样就可以修改原有代码的逻辑.添加新代码.添加或修改资源.或者更有甚者植入病毒等等,从而破坏原有APK的安全和用户体验,最终伤害到用户和原有的开发者. 而事物都是有两方面的,有矛就有盾,针对Android应用安全的各种方案应运而生,大家比较熟悉一般是各类加壳加固的工具,我们可以使用这些工具来保护我们的APK,加壳加固是另外一个话题