Мое приложение содержит список, который может содержать изображения с SD-карты пользователя. Он отлично работает, но когда загружается любое изображение, наблюдается заметное отставание. У меня это в моем getView:Android listview image lag
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(image, o);
final int REQUIRED_SIZE=70;
//Find the correct scale value. It should be the power of 2.
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale++;
}
//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
Bitmap myBitmap = BitmapFactory.decodeFile(image, o2);
image_main.setImageBitmap(myBitmap);
Любые предложения?
EDIT: Заменены выше этого, но изображения не загружаются ...
class Thumbnailer extends AsyncTask<String, Void, Bitmap> {
String image;
@Override
protected void onPostExecute(Bitmap result) {
image_main.setImageBitmap(result);
}
@Override
protected void onProgressUpdate(Void... progress) {
}
@Override
protected Bitmap doInBackground(String... params) {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(image, o);
final int REQUIRED_SIZE=70;
//Find the correct scale value. It should be the power of 2.
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale++;
}
//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
return BitmapFactory.decodeFile(image, o2);
}
}
new Thumbnailer().execute(image);
Спасибо за ответ. Я пытаюсь использовать AsyncTask, но не могу заставить его работать. Я обновил свой первый пост, чтобы показать вам, что я сделал. Я никогда не сталкивался с AsyncTask, поэтому я могу делать это неправильно. Я довольно много начинаю здесь;) – Paul 2010-11-25 20:03:07