Asset资源的使用

asset中的资源会别直接放到apk中,即不会在R文件生成相应的唯一标识,那我们在工程中应该怎么使用呢?

以下以一个png图片为例,图片名为:aaa.png  废话不多说,直接上代码:


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.Menu;
import android.view.View;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {

	private WebView wv;
	private ImageView imageview;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		wv = (WebView) findViewById(R.id.tv);
		imageview = (ImageView) findViewById(R.id.imageview);
		
		// 方式一:asset中的资源会默认生成一个路径   格式为: file:///android_asset/资源文件名称(全名称哟)
		// WebView view = new WebView(this);
		// wv.loadUrl("file:///android_asset/aaa.png");

	}

	/**
	 * @param view
	 */
	public void show(View view) {

		AssetManager assets = getAssets();
		String filename = "aaa.png";
		
		// 方式二:通过BitmapDrawable将输入流转换成Drawable对象 ,或通 BitmapFactory将输入流转成Bitmap对象
		try {
			InputStream inputStream = assets.open(filename,
					AssetManager.ACCESS_STREAMING);
//			Bitmap decodeStream = BitmapFactory.decodeStream(inputStream);
			Drawable drawable = BitmapDrawable.createFromStream(inputStream,
					filename);
			imageview.setBackgroundDrawable(drawable);

		} catch (IOException e1) {
			e1.printStackTrace();
		}
		
		// 方式三:将输入流转保存到SD卡

		/*File imageFile = new File(Environment.getExternalStorageDirectory()
				.getAbsolutePath(), filename);
		if (imageFile.isDirectory()) {
			imageFile.delete();
			try {
				imageFile.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		if (!imageFile.exists()) {
			try {
				imageFile.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		try {
			InputStream inputStream = assets.open(filename,
					AssetManager.ACCESS_STREAMING);
			if (imageFile.isDirectory()) {
				imageFile.delete();
				imageFile.createNewFile();
			}
			FileOutputStream outputStream = new FileOutputStream(imageFile);
			byte[] buffer = new byte[1024];
			int len;
			while ((len = inputStream.read(buffer)) != -1) {
				outputStream.write(buffer, 0, len);
				outputStream.flush();
			}
			outputStream.close();
			inputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		imageview.setBackgroundDrawable(Drawable.createFromPath(imageFile
				.getAbsolutePath()));*/

	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值