Android获取asset下的资源图片

简介: MainActivity如下: package cc.testasset;import java.io.InputStream;import android.


MainActivity如下:

package cc.testasset;

import java.io.InputStream;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

/**
 * Demo描述: 
 * 获取asset下的资源图片
 * 
 * 注意事项:
 * 1 不可以获得asset下某个文件夹中某资源的绝对路径.
 *   因为asset是要打包到apk中的
 * 2 有人说:
 *   String filePath = "file:///android_asset/文件名";
 *   可以表示一个文件的路径.经过测试,该方法不靠谱.
 *   可参见代码.
 */
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
	
	private void init(){
		//测试一:获取asset下图片资源
		try {
			AssetManager assetManager = getAssets();
			InputStream is = assetManager.open("Fresh_01.jpg");
			//以下注释掉的代码不靠谱.若采用,会有异常
			//InputStream is = assetManager.open("file:///android_asset/Fresh_01.jpg");
			Bitmap bitmap = BitmapFactory.decodeStream(is);
			if (bitmap != null) {
				System.out.println("测试一:width=" + bitmap.getWidth() + " ,height="+ bitmap.getHeight());
			} else {
				System.out.println("bitmap == null");
			}
		} catch (Exception e) {
			System.out.println("异常信息:" + e.toString());
		}
		
		System.out.println("======================");
		
		//测试二:获取asset下某个文件夹中的图片资源
		try {
			AssetManager assetManager = getAssets();
			InputStream is = assetManager.open("ml_lszn_Fresh/Fresh_02.jpg");
			Bitmap bitmap = BitmapFactory.decodeStream(is);
			if (bitmap != null) {
				System.out.println("测试二:width=" + bitmap.getWidth() + " ,height="+ bitmap.getHeight());
			} else {
				System.out.println("bitmap == null");
			}
		} catch (Exception e) {
			System.out.println("异常信息:" + e.toString());
		}

		System.out.println("======================");
		
		// 测试三:遍历asset下某个文件夹中的所有图片资源
		try {
			InputStream is=null;
			Bitmap bitmap=null;
			String dirPath="ml_lszn_Fresh";
			String photoName=null;
			AssetManager assetManager = getAssets();
			//使用list()方法获取某文件夹下所有文件的名字
			String [] photos=assetManager.list(dirPath);
			for (int i = 0; i < photos.length; i++) {
				photoName=photos[i];
				//利用dirPath+"/"+photoName组拼某文件完整路径
				is = assetManager.open(dirPath+"/"+photoName);
				bitmap = BitmapFactory.decodeStream(is);
				System.out.println("测试三: i="+i+" ,width=" + bitmap.getWidth() + " ,height="+ bitmap.getHeight());
			}
		} catch (Exception e) {
			System.out.println("异常信息:" + e.toString());
		}

	}

}

main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取asset下的资源图片"
        android:layout_centerInParent="true" />

</RelativeLayout>



相关文章
|
4月前
|
XML Java Android开发
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
Android Studio App开发之对图片进行简单加工(包括放缩,旋转等等 附源码)
45 0
|
4月前
|
XML Java Android开发
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
Android Studio App开发之使用相机拍摄照片和从相册中选取图片(附源码 超详细必看)
163 0
|
4月前
|
XML JSON Java
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
Android App开发即时通信中通过SocketIO在客户端与服务端间传输文本和图片的讲解及实战(超详细 附源码)
61 0
|
17天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
19 1
|
4月前
|
API Android开发
[Android]图片加载库Glide
[Android]图片加载库Glide
54 0
|
4月前
|
Android开发
[Android]制作9-Patch图片
[Android]制作9-Patch图片
42 0
|
4月前
|
XML JSON Android开发
Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)
Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)
49 0
|
4月前
|
XML 缓存 Java
Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)
Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)
111 0
|
4月前
|
XML 算法 Java
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)
106 0
|
4月前
|
存储 Android开发
Android Studio开发之存储卡的文件操作讲解及实战(附源码 在存储卡上读写文本文件和图片文件)
Android Studio开发之存储卡的文件操作讲解及实战(附源码 在存储卡上读写文本文件和图片文件)
52 0