Androidローカル画像をBitmapストレージに変換
2118 ワード
先日、プロジェクトでこのような問題に遭遇しました.表情リストの展示をするには、UIが表情画像をセットしました.jpg形式で、画像を手に入れた後、まずこれらの画像をデータソースとして1つのセットに保存し、アダプタを通じてGridViewリストに表示することを考えています.構想ができて、具体的にどのように実現しますか?
ここでは、単純化のために、プロジェクト内のassetsディレクトリの下にこの一連のピクチャリソースを配置し、これらのピクチャリソースに対して入力ストリーム(InputStream)を取得し、BitmapFactoryというファクトリクラスのdecodeStream()メソッドを使用してBitmapオブジェクトに転送し、forループのセットを通過して、これらのBitmapオブジェクトをリストセットに格納します.具体的な実装方法は、次のとおりです.
その後、Adapterでは、対応するImageViewコントロールに画像を設定するだけでいいです.
これでローカルピクチャのリスト表示機能が完了します.
ここでは、単純化のために、プロジェクト内のassetsディレクトリの下にこの一連のピクチャリソースを配置し、これらのピクチャリソースに対して入力ストリーム(InputStream)を取得し、BitmapFactoryというファクトリクラスのdecodeStream()メソッドを使用してBitmapオブジェクトに転送し、forループのセットを通過して、これらのBitmapオブジェクトをリストセットに格納します.具体的な実装方法は、次のとおりです.
package com.zhibeizhen.antusedcar.bbs.tools;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Jarchie on 17/1/6.
*
*/
public class EmojyUtils {
//
private static List bitmaps;
/**
* Assets Bitmap
*/
public static List addImageToList(Context context){
bitmaps = new ArrayList<>();
for (int i = 1;i < 51;i++){
Bitmap bitmap = getImageFromAssetsFile(context,i+".jpg");
bitmaps.add(bitmap);
}
return bitmaps;
}
/**
* Assets , Bitmap
* @param fileName
* @return
*/
private static Bitmap getImageFromAssetsFile(Context context, String fileName){
Bitmap image = null;
AssetManager manager = context.getResources().getAssets();
try {
InputStream inputStream = manager.open(fileName);
image = BitmapFactory.decodeStream(inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
}
その後、Adapterでは、対応するImageViewコントロールに画像を設定するだけでいいです.
hodler.iv.setImageBitmap(list.get(position));
これでローカルピクチャのリスト表示機能が完了します.