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()));*/
}
}