0

我需要用图像制作 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>

我认为问题是大分辨率。我该如何解决?谢谢。

4

1 回答 1

0

1st:您可以以Bitmap的形式提取图像。2nd :将位图转换为缩小尺寸的缩放位图。

   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 中。

于 2013-05-01T14:42:13.630 回答