android Asstes的用法总结
来源:互联网 发布:mac系统怎么安装 编辑:程序博客网 时间:2024/05/18 00:16
之前一直都是看别人的博客,今天才决定写博客,记录自己学习过程中的问题,知识总结,以和其他朋友分享。
前几天遇到读取Assets中的资源文件的问题,故在这做下总结。
1、assets和res目录有什么不同.
assets目录下存放的是原生的资源文件。系统在编译的时候不会编译assets目录下的资源文件,所以不能通过R.XXX.id直接访问assets目录下的资源文件。
因为apk安装之后会放在/data/app/**.apk目录下,以apk的形式存在,assets/res被绑定在apk里,并不会解压到/data/data/YourApp目录下,
因此,assets目录下的文件也不可以通过资源的绝对路径访问。那么,我们该用何种方式来访问assets目录下的资源文件呢?
AssetManager提供了一个低级别的api,可以通过简单的字节流的形式打开和读取与应用程序绑定在一起的原始资源文件。
通过getAssets()方法获取AssetManager对象。
AssetManager类常用方法:
Public Methods
final String[] list(String path) 返回指定路径下的所有文件及目录名。
final InputStream open(String fileName) 使用 ACCESS_STREAMING模式打开assets下的指定文件。.
final InputStream open(String fileName, int accessMode) 使用显示的访问模式打开assets下的指定文件.
前几天遇到读取Assets中的资源文件的问题,故在这做下总结。
1、assets和res目录有什么不同.
res一般存放的是可编译的资源文件(raw除外,raw资源文件不会被编译)。
assets目录下存放的是原生的资源文件。系统在编译的时候不会编译assets目录下的资源文件,所以不能通过R.XXX.id直接访问assets目录下的资源文件。
因为apk安装之后会放在/data/app/**.apk目录下,以apk的形式存在,assets/res被绑定在apk里,并不会解压到/data/data/YourApp目录下,
因此,assets目录下的文件也不可以通过资源的绝对路径访问。那么,我们该用何种方式来访问assets目录下的资源文件呢?
系统为我们提供了一个AssetManager工具类来帮助我们使用assets目录下的原始资源文件。
AssetManager提供了一个低级别的api,可以通过简单的字节流的形式打开和读取与应用程序绑定在一起的原始资源文件。
通过getAssets()方法获取AssetManager对象。
AssetManager类常用方法:
Public Methods
final String[] list(String path) 返回指定路径下的所有文件及目录名。
final InputStream open(String fileName) 使用 ACCESS_STREAMING模式打开assets下的指定文件。.
final InputStream open(String fileName, int accessMode) 使用显示的访问模式打开assets下的指定文件.
3、怎么在Android studio 工程中向assets文件夹下存放资源
然后点击finish即可自动创建出asstes空文件夹。
然后可以在继续在assets文件夹下创建新的目录,存放资源文件。
注意:如果误将assets空文件夹创建到了res目录下,assets空文件夹会显示不出来。
这时,即使去工程所在的路径下直接将文件复制到assets文件夹下,代码处理正确,也读取不到assets目录下的文件。
4、读取assets目录下的资源文件的例子。
layout文件就只包含了一个ImageView 和一个Button,比较简单在这就不呈现出来了,
package com.outdoors.jinghuang.demo;import android.app.Activity;import android.content.res.AssetManager;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.IOException;import java.io.InputStream;
public class AssetsDemo extends Activity implements View.OnClickListener { private ImageView showPictureIv; private Button nextBt; private String[] pictures; private int currentPicture = 0; private AssetManager assets; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.assets_demo); loadAssetsData(); initView(); } private void initView() { showPictureIv = (ImageView) findViewById(R.id.show_picture_iv); //设置默认图片 showPictureIv.setImageResource(R.drawable.ic_launcher); nextBt = (Button) findViewById(R.id.next_bt); nextBt.setOnClickListener(this); } private void loadAssetsData() { //获取AssetManager assets = getResources().getAssets(); try { //获取assets目录下的所有文件及目录名 pictures = assets.list("picture"); } catch (IOException e) { e.printStackTrace(); } } @Override public void onClick(View view) { if (view.getId() == R.id.next_bt) { //防止越界 if (currentPicture >= pictures.length) { currentPicture = 0; } InputStream inputStream = null; try { inputStream = assets.open("picture/" + pictures[currentPicture]); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); showPictureIv.setImageBitmap(bitmap); currentPicture++; } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); inputStream = null; } catch (IOException e) { e.printStackTrace(); } } } } }}
0 0
- android Asstes的用法总结
- Android 读取资源文件asstes路径
- Android Intent的用法总结
- android定时器的用法总结
- android shape的用法总结
- android定时器的用法总结
- Android Intent的用法总结
- Android的Adapter用法总结
- Android的SlidingDrawer用法总结
- Android Animation的用法总结
- Android Matrix的用法总结
- Android Matrix的用法总结
- Android GridView的用法总结
- Android Matrix的用法总结
- android Scroller的用法总结
- 【Android】Android中Intent的用法总结
- 总结一下android的selector的用法
- android软键盘的用法总结
- Latex双栏布局最后一页底部对齐的处理
- HDU5976 Detachment
- Java File类总结和FileUtils类
- Android_SwipeRefreshLayout 实现下拉刷新
- PHP 会话控制(session与cookie)
- android Asstes的用法总结
- Windows核心编程 第十七章 -内存映射文件(上)
- ReflectUitls类的编写和对反射机制的解析
- 线性神经网络模型与学习算法
- java项目中配置Log4j
- python 阿里云DNS解析作为DDNS使用
- MapReduce Shuffle原理 与 Spark Shuffle原理
- RxJava(新手推荐一)
- .net Core 自我学习随笔(二)——非 Visual Studio 下 MVC 的搭建方法