我需要用图像制作ListView;图像存储在SDCard上,我需要使用URI加载它。这对我来说不是问题。但是存在以下问题:我将10个图像添加到drawable中并为ListView创建简单的适配器:
private class PointImagesAdapter extends ArrayAdapter<Integer> {
private static final int LAYOUT_ID=R.layout.adapter_point_images;
private Integer[] ii;
private LayoutInflater inflater;
private List<ImageInfo> images;
public PointImagesAdapter(Integer[] ii) {
super(MainActivity.this, LAYOUT_ID, ii);
this.ii=ii;
inflater=LayoutInflater.from(MainActivity.this);
}
@Override
public View getView(int position, View view, ViewGroup group) {
if (view==null) {
view=inflater.inflate(LAYOUT_ID, null);
}
ImageView i=(ImageView)view.findViewById(R.id.adapterPointImagesItem);
i.setImageResource(ii[position]);
return view;
}
}
它可以工作,但是所有图像的分辨率都很高(2048x1536),ListView的滚动速度非常慢:
<ListView
android:id="@+id/dialogViewImagesList"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
android:fastScrollEnabled="true"
android:persistentDrawingCache="scrolling"
android:scrollingCache="false" >
</ListView>
我认为问题是大决议。我该如何解决?谢谢。
答案 0 :(得分:0)
1st:您可以以Bitmap的形式提取图像。 第二步:将位图转换为缩小尺寸的缩放位图。
Bitpmap bm = BitmapFactory.decode ("image file path");
bm.setDensity(integer);
Bitmap bm1 = Bitmap.createScaledBitmap (bm, width, height, false);
ImageView i=(ImageView)view.findViewById(R.id.adapterPointImagesItem);
i.setImageBitmap(bm1);
这将在内部减小Image在运行时显示在listView中的大小。