我遇到需要设置图像列表的情况,我无法做到这一点,因为我不知道如何将字符串数组列表传递给位图。
代码:
private void setImageBit(String item, ImageView imageView){
path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "SanPics2";
File file = new File(path,"Image 5.jpg");
String item = file.toString();
Bitmap bitmap = BitmapFactory.decodeFile(item);
float i = ((float) imageWidth) / ((float) bitmap.getWidth());
float imageHeight = i * (bitmap.getHeight());
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) imageView.getLayoutParams();
params.height = (int) imageHeight;
params.width = (int) imageWidth;
imageView.setLayoutParams(params);
imageView.setImageBitmap(bitmap);
}
我知道上述代码只会设置指定的“Image 5.jpg”,但我需要在 MASONRY VIEW 中设置更多图像。见下面的例子。我想动态地设置从下面描绘的视图中的相机拍摄的图像。但我无法做到这一点。
我也试过decodeByteArray()
会得到数组(我会传递数组中的路径列表)但是这似乎不起作用导致将字符串路径转换为字节不能按预期工作。而且我还尝试了以下
path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + "SanPics2";
File file = new File(path);
Bitmap bitmap = BitmapFactory.decodeFile(path);
imageView.setImageBitmap(bitmap);
但这似乎返回了一组空图像。没有图像的空白页。如果需要,我很乐意为您提供更多代码。任何帮助将受到高度赞赏。在此先感谢您,并随时要求澄清。
答案 0 :(得分:4)
您只需要创建带有Bitmap的ArrayList,如下所示:
ArrayList<Bitmap> img_bitmap
现在,只需使用以下功能逐个加载图像并将其存储到位图arrylist中,如下所示:
public static Bitmap ImgBitFromFile(String file_name) {
File imgFile = new File(
"/data/data/package/app_my_sub_dir/images/" + file_name);
//System.out.println("Image Exists:::" + imgFile.getAbsolutePath().toString());
if (imgFile.exists()) {
// System.gc();
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile
.getAbsolutePath());
//System.out.println("Image Exists:::");
return myBitmap;
}
return null;
}
并存储到位图arraylist中,如下所示:
for (int i = 0; i < c.getCount(); i++) {
if(c.getString(3)!="") {
img_bitmap.add(ImgBitFromFile(c.getString(5)));//Image path from Database
img_name.add(c.getString(3));
}
c.moveToNext();
}
并最后将逐个图像加载到网格视图ImageAdapter中。