我正在制作某种应用程序,以全分辨率全屏显示图片,并支持滑动以更改照片。我完全按照本教程实现了ViewPager:http://developer.android.com/training/displaying-bitmaps/display-bitmap.html。在我的Nexus 5上,它适用于屏幕截图和前置摄像头的照片,但是当我需要滑动以支持相机的照片时,会有一个巨大的延迟(这张照片大约是2MB)。用户在加载图像时稍等一点并没有问题,但是有这种滞后就会中断。在谷歌应用程序照片中,刷这张照片没有错误。
答案 0 :(得分:0)
您正在从UI线程加载2MB图片。您应该尝试在后台线程中预加载下一个/上一个位图并加载它。这是我在后台使用的位图加载类。
private class LoadBitmapData extends AsyncTask<String, Object, Bitmap> {
private Bitmap pictureBitmap;
private ILoadBitmapData delegate;
private double maximumWidth = 1024;
public LoadBitmapData(ILoadBitmapData del){
this.delegate = del;
}
protected Bitmap doInBackground(String... path){
try{
pictureBitmap = BitmapFactory.decodeFile(path[0]);
//make sure we don't load a tremendously huge picture and crash the app.
if(pictureBitmap.getWidth() > 6000){
double desiredWidth = maximumWidth ;
int nh = (int) ( pictureBitmap.getHeight() * (desiredWidth / pictureBitmap.getWidth()) );
pictureBitmap = Bitmap.createScaledBitmap(pictureBitmap, 1024, nh, true);
}
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return pictureBitmap ;
}
@Override
public void onPostExecute(Bitmap pictureBitmap ){
delegate.assignBitmap(pictureBitmap);
}
}