我有一個viewPager有4個圖像需要調整大小。我實現了不同的選項,但沒有選項運行。我寫了不同的選擇:滾動快速viewPager與圖像在LruCache
在getView地說:
image.setImageBitmap(bitmap);
位圖獲得:
BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeStream(bitmapOriginal, null, options); int sampleSize = 1; while ((options.outHeight > 600 * sampleSize) &&(options.outWidth > 400 * sampleSize)) { sampleSize *= 2; } options.inJustDecodeBounds = false; options.inMutable = false; options.inSampleSize = sampleSize; Bitmap bm=BitmapFactory.decodeStream(bimapOriginal, null, options);
但它是非常緩慢。
我把最後的代碼放在AsyncTask()中,但我無法快速滾動。
我重寫
onPageScrollStateChange(int state)
我只顯示圖像時的狀態爲
SCROLL_STATE_IDLE
但效果是一樣的,在其他情況下。我使用LruCache,我將圖像保存在Asynctask的LruCache中。
在instantiateItem我把for(int i=position *4;i<(position +1)*4 +4;i++) { //NameImage is an Array with the name of image. Every time that calling instantiateItem save 4 images in LruCache new BitmapWorkerTask(nameImage[i).executorOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
但問題是一樣的最後的情況下,我不能快速滾動和應用程序是如此緩慢。
我的圖像質量和尺寸都很大。我怎樣才能在viewPager中快速滾動?