简单的图像列表Android(如图库)

时间:2013-05-01 14:08:02

标签: android

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

我认为问题是大决议。我该如何解决?谢谢。

1 个答案:

答案 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中的大小。