Android,创建多个位图时createScaledBitmap变慢

o

我正在使用以下代码来创建调整大小的位图,该代码可以正常工作,但是速度很慢。问题是,当我尝试将其用于多个图像时,手机会冻结,直到创建图像为止。

这是我的代码:

Bitmap bitmap = null;
File imgFile = new File(my_pic_file);
if(imgFile.exists()) {
  bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
  Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, 300, 200, false);
  first_image.setImageBitmap(resizedBitmap);
}
Stratus_Hunter

问题是您正在主线程上进行工作。这意味着它将冻结UI,直到完成所有处理。您可以通过使用线程或异步任务来解决此问题。

 private class LoadImageTask extends AsyncTask<String, Void, Bitamp> {

 private ImageView mImageView = null;

 public LoadImageTask(ImageView imageView) {

    mImageView = imageView;
 }

 protected Bitmap doInBackground(String... file) {

    Bitmap bitmap = null;
    Bitmap resizedBitmap = null;
    File imgFile = new File(file);
    if(imgFile.exists()) {
      bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
      resizedBitmap = Bitmap.createScaledBitmap(bitmap, 300, 200, false);
    }

    return resizedBitmap;
 }

 protected void onPostExecute(Bitmap result) {
     if (result != null && mImageView != null) {

        mImageView.setImageBitmap(result);
     }
 }

然后在您的代码中只需调用

new LoadImageTask(first_image).execute(my_pic_file);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章