我有一种情况需要设置图像列表,但我无法做到这一点,因为我不知道如何将字符串数组列表传递给位图。
代码:
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 中设置更多图像。例如,请参见下文。我想在下面描述的 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);
但这似乎返回一组空图像。没有图像的空白页面。如果需要,我很乐意为您提供更多代码。任何帮助将不胜感激。提前致谢,如有任何疑问,请随时提出要求。
最佳答案
你只需要像下面这样用 Bitmap 创建 ArrayList:
ArrayList<Bitmap> img_bitmap
现在,只需使用以下函数加载一张图片并将其存储到位图列表中,如下所示:
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;
}
并像下面这样存储到位图数组列表中:
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();
}
最后将一张一张的图像加载到您的 GridView ImageAdapter 中。
关于android - 如何将图像传递到 Android 中的 ArrayList<String>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20987392/