0

我是安卓新手。我在一个目录中有上千张图片。我在网格视图中显示图像拇指。使用以下代码它的作品。但问题是加载视图需要 45 秒。我需要它:使用加载器显示网格并一张一张加载图像。所以用户不能等待最后一张图片加载。

代码是:

public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater layoutInflater = (LayoutInflater) ctx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        ListRowHolder listRowHolder;
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.ll_sponsor_list_item,
                    parent, false);
            listRowHolder = new ListRowHolder();
            listRowHolder.imgSponsor = (ImageView) convertView
                    .findViewById(R.id.imggrid_item_image);
            convertView.setTag(listRowHolder);

        } else {
            listRowHolder = (ListRowHolder) convertView.getTag();
        }
        try {

            listRowHolder.imgSponsor
                    .setImageBitmap(decodeSampledBitmapFromResource(
                            ImageName.get(position)));
        } catch (Exception e) {
            Toast.makeText(ctx, e + "", Toast.LENGTH_SHORT).show();
        }

        return convertView;
    }


    public static Bitmap decodeSampledBitmapFromResource(String fileName) {
        Bitmap picture = BitmapFactory.decodeFile(fileName);
        int width = picture.getWidth();
        int height = picture.getWidth();
        float aspectRatio = (float) width / (float) height;
        int newWidth = 98;
        int newHeight = (int) (98 / aspectRatio);
        return picture = Bitmap.createScaledBitmap(picture, newWidth,
                newHeight, true);
    }
4

1 回答 1

1

它很慢的原因是因为您正在解码文件并在您的 UI 线程上为许多图像生成缩放位图。因为您正在进行长时间的操作,所以您需要对图像进行延迟加载

前提类似于链接中的解决方案(您可以使用 a Handler),但您将解码文件并缩放位图,而不是在那里下载图像。

于 2013-01-05T07:12:08.893 回答