0

我的 android 应用程序有问题。我使用了一个应用程序,它使用手机/平板电脑的内置相机制作图片。由于相机的高分辨率,这些图片有时尺寸很大。

现在我加载应用程序并创建一个 listView,其中图片的小缩略图位于左侧,右侧是一些文本。

我以这种方式创建图片:

Bitmap a = BitmapFactory.decodeFile(url);
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
         (float) 66.0, context.getResources().getDisplayMetrics());
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
         (float) 48.0, context.getResources().getDisplayMetrics());
Bitmap b = Bitmap.createScaledBitmap(a, width, height, false);

问题是这一步需要相当长的时间。

有什么办法可以让这更快吗?

4

2 回答 2

0

没有办法让它更快,但你不应该阻塞 UI 线程。看

  1. AsyncTask (以及许多相关问题,例如Using AsyncTask to load Images in ListView
  2. LruCache
于 2012-10-06T11:32:40.963 回答
0

这是我从这里使用的解决方案:https ://stackoverflow.com/a/5934983/1369222

效果很好!

byte[] imageData = null;

        try     
        {

            final int THUMBNAIL_SIZE = 64;

            FileInputStream fis = new FileInputStream(fileName);
            Bitmap imageBitmap = BitmapFactory.decodeStream(fis);

            imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            imageData = baos.toByteArray();

        }
        catch(Exception ex) {

        }

确保在异步或单独的线程任务中执行此操作,以免阻塞 UI 线程!

于 2012-10-06T11:47:38.880 回答