Android获取asset下的资源图片


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>



Android获取asset下的资源图片,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。