我有一些图像在应用程序启动时保存到Android设备上的目录中 - 我希望能够在图库中显示这些图像,但到目前为止我还没能做到。
我正在关注示例图库代码here,但它使用可绘制资源ID而不是文件路径。我发现this solution与我正在寻找的类似,只不过它使用ImageView而不是Gallery。
所以使用ImageView的代码看起来像这样:
File imgFile = new File(“/data/data/com.myproject.example/files/someImage.png”);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
myImage.setImageBitmap(myBitmap);
}
以上代码有效,但我不确定如何使用Gallery。我一直在寻找答案和尝试不同的东西,但我是Android开发的新手,我觉得我有点过头了。
感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
基本上我认为你只需要将两个例子放在一起。
使用HelloGallery示例作为开头,但是您想更改getView()
的{{1}}方法中的代码,以便ImageAdapter
上的setImageBitmap()
而不是ImageView
{1}}。
您需要一个要加载的图像文件路径的数组/集合。
答案 1 :(得分:0)
你需要做的是这样的事情:
public ImageAdapter(Context c, int itemId) {
context = c;
imgArr = GlobalStore.getItem(itemId).getPhotos();
TypedArray attr = context.obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = attr.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground, 0);
attr.recycle();
}
正如您所看到的,这基本上是Gallery教程的副本。在构造函数 imgArr 变量中加载了一个JPG文件名数组。例如,这些是从数据库中读取的。
然后在getView函数中你有这样的东西......
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
String tmpStr = appContext.getFilesDir() + File.separator + "photos" + File.separator + imgArr.get(position);
Bitmap bitmap = BitmapFactory.decodeFile(tmpStr);
imageView.setImageBitmap(bitmap);
imageView.setLayoutParams(new Gallery.LayoutParams(350, 300));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setBackgroundResource(mGalleryItemBackground);
return imageView;
}
正如您所看到的,getFilesDir()获取存储文件的应用程序数据位置,然后让我们想象所有照片都在“照片”目录中,您构建路径并附加 imgArr 数组。因为每张照片都会调用它,所以您只需使用传递的位置变量。
如果您没有一系列照片,那么可能就是通过阅读存储照片的目录来构建照片,将所有文件名加载到数组中然后执行此操作。
然后你就像在图库教程中那样在画廊一侧完成剩下的工作。