2013-10-13 2 views
1

다음 코드를 사용하여 크기가 조정 된 비트 맵을 만들 때 코드는 정상적으로 작동하지만 속도가 매우 느립니다. 문제는 이미지를 만들 때까지 하나 이상의 이미지에이 기능을 사용하려고 할 때 전화가 정지된다는 것입니다.여러 비트 맵을 만들 때 Android가 createScaledBitmap 속도가 느리다

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); 
} 

답변

2

문제는 메인 스레드에서 작업을하고있는 것입니다 :

여기 내 코드입니다. 즉, 모든 처리가 완료 될 때까지 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); 
+0

가 답장을 보내 주셔서 감사 호출이 훨씬 더 작동하는 것 같다! – steo

관련 문제