一个用到Bitmap的例子.用到技术,AssetManager,BitmapDrawable.
查看/assets/目录下图片的图片查看器
public class MainActivity extends Activity {
private ImageView mImage;
private Button mBtn;
private AssetManager mAssetManager;
private String[] mImagesData;
private int currintImg = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAssetManager = getAssets();
try {
//获取/assets/目录下的所有文件
mImagesData = mAssetManager.list("");
} catch (IOException e) {
e.printStackTrace();
}
mImage = (ImageView) findViewById(R.id.image);
mBtn = (Button) findViewById(R.id.btn);
mBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//如果发生数组越界,将currintImg初始化为0
if(currintImg >= mImagesData.length){
currintImg = 0;
}
while(!mImagesData[currintImg].endsWith(".png")
|| !mImagesData[currintImg].endsWith(".jpg")
|| !mImagesData[currintImg].endsWith(".gif")){
currintImg ++;
//如果发生数组越界,将currintImg初始化为0
if(currintImg >= mImagesData.length){
currintImg = 0;
}
}
InputStream inputStream = null;
try {
//打开指定资源的输入流
inputStream = mAssetManager.open(mImagesData[currintImg++]);
} catch (IOException e) {
e.printStackTrace();
}
//获取ImageView组件的BitmapDrawable对象
BitmapDrawable bitmapDrawable = (BitmapDrawable) mImage.getDrawable();
//将当前imageview的bitmap对象关闭
if(bitmapDrawable.getBitmap() != null && bitmapDrawable.getBitmap().isRecycled()){
bitmapDrawable.getBitmap().recycle();
}
//改变ImageView的图片
mImage.setImageBitmap(BitmapFactory.decodeStream(inputStream));
}
});
}
}
1. 获取AssetManager
AssetManager mAssetManager = context.getAssets();
2. 列出assets目录下所有文件
String[] filePathList = mAssetManager.list("");
3. 打开某个文件
InputStream inputStream = mAssetManager.open(mImagesData[currintImg++]);
推荐:
资源预加载与AssetManager的使用
作者:黄云坤
http://www.cnblogs.com/htynkn/archive/2012/04/04/2431863.html