Java 从SD卡读取栅格视图库
我有一个网格视图,它将特定文件夹中的所有图像加载到自己的文件夹中。我试图获得它,这样当用户在网格视图中单击单个图像时,它会在图像视图中设置自身的放大版本。我想我需要尝试做的是,当创建网格视图并将图像加载到其中时,我需要在创建的imageview上附加一个数组,将图像保存在网格视图中,并将其放置在SD卡中。因此,当图像被加载时;保存图像的位置并将其附加到gridview中的imageview。到目前为止,我将从SD卡加载的最后一张图片加载到放大的图像视图中 Main.javaJava 从SD卡读取栅格视图库,java,android,eclipse,gridview,Java,Android,Eclipse,Gridview,我有一个网格视图,它将特定文件夹中的所有图像加载到自己的文件夹中。我试图获得它,这样当用户在网格视图中单击单个图像时,它会在图像视图中设置自身的放大版本。我想我需要尝试做的是,当创建网格视图并将图像加载到其中时,我需要在创建的imageview上附加一个数组,将图像保存在网格视图中,并将其放置在SD卡中。因此,当图像被加载时;保存图像的位置并将其附加到gridview中的imageview。到目前为止,我将从SD卡加载的最后一张图片加载到放大的图像视图中 Main.java public cla
public class Main extends Activity{
ImageView photoHolder;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery);
photoHolder = (ImageView) findViewById(R.id.photoHolderView);
photoHolder.setVisibility(View.GONE);
GridView gridView = (GridView) findViewById(R.id.grid_view);
gridView.setVisibility(View.VISIBLE);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> a, View view, int position, long id) {
photoHolder.setVisibility(View.VISIBLE);
photoHolder.setImageURI(ImageAdapter.uri);
}
});
}
另一方面,由于内存泄漏,它崩溃了很多,你知道如何在从SD卡加载时创建“样本/缩略图”大小的图像吗?你说得对,你需要跟踪每个缩略图的文件名/位置。最简单的方法是修改
getView
方法并添加一行:
imageView.setImageURI(uri);
imageView.setTag(uri); //new line added
return imageView;
然后,在您的onItemClickListener
中,您将获得单击的imageview,并获得其标记,这将是SD卡上的文件名:
public void onItemClick(AdapterView<?> a, View view, int position, long id) {
photoHolder.setVisibility(View.VISIBLE);
photoHolder.setImageURI((Uri)view.getTag());
}
public void onItemClick(适配器视图a、视图视图、整型位置、长id){
photoHolder.setVisibility(视图.可见);
setImageURI((Uri)view.getTag());
}
至于加载位图时的内存问题,您可以使用
BitmapFactory.Options
指示缩放因子-请在Android开发者网站上查看-它包含您需要的示例代码。非常感谢您的帮助。一切正常并已分类:)
public void onItemClick(AdapterView<?> a, View view, int position, long id) {
photoHolder.setVisibility(View.VISIBLE);
photoHolder.setImageURI((Uri)view.getTag());
}