你好,我有一個viewpager與幾個頁面(使用片段狀態尋呼機)和一些PNG作爲背景到這些頁面。我已經在Ui中顯示位圖(http://developer.android.com/training/displaying-bitmaps/display-bitmap.html),所以我已經緩存並將圖像設置爲在後臺線程中繪製。但是當打開尋呼機的頁面時,我仍然有些滯後。在每個片段上,我只是誇大了onCreateView()方法的視圖,所以我不知道可能會導致這種滯後。我能做些什麼來消除這種滯後/波浪效應?Android ViewPager滯後
回答
您可能想嘗試viewPager.setOffScreenLimit(size)爲您的頁面數量。這將加載所有的片段一次,並保持在刷卡時重新加載它們。
我有類似的問題。
我正在顯示類似教程的頁面。每個頁面都是全屏jpg。
起初我把圖片放在res/drawables
的文件夾裏。刷視圖時,viewpager非常滯後。
然後我把那些jpgs移動到
res/drawable-hdpi
文件夾,滯後就沒了。
我認爲根據文件夾對圖片進行不同的優化。所以我們不能把一切都放在res/drawable
文件夾中
我也有類似的問題,在我的情況下,滯後是由佈局的背景圖片太大造成的。我只是調整了圖片和刷卡滯後不見了
我的解決辦法,以避免這種滯後時切換頁面爲:預載圖片
final Drawable[] images = new Drawable[3];
for(int i=0; i<3; i++){
int position = i+1;
images[i] = getResources().getDrawable(getResources().getIdentifier("image"+position, "drawable", getPackageName()));
}
然後:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
imageSwitcher.setImageDrawable(images[position]);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
雖然代碼是讚賞,它應該總是有一個附帶的解釋。這並不需要很長時間,但它是可以預料的。 – peterh
上@coderek構建回答我似乎已經通過獲取位圖解決了這個問題,但沒有針對特定的密度對它們進行縮放:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resource, opts);
((ImageView) view).setImageBitmap(bitmap);
在xxhdpi
設備中使用來自drawable
文件夾的圖像導致分配的內存多達8倍!
PS:
您也可以往下品嚐繪製如果分辨率過大:
opts.inSampleSize = 2;
對於去除滯後:
1)把在res圖像/ drawable- hdpi如果圖像是靜態的。如果它是從URL下載的,那麼使用後臺線程來加載圖像。
2)通過此方法設置頁面關閉屏幕限制viewPager.setOffScreenLimit(size)。在該視圖頁面緩存器的幫助下,默認情況下,您在此方法中設置的最小屏幕數量爲1。
3)您可以使用FragmentPagerAdapter和更好的性能FragmentStatePagerAdapter。
上述解決方案都不適用於我的案例!
我發現了一個解決該問題的庫,並且還包含了一些更有趣的功能。 Take a look at it here!
試試這個:
在gradle這個
compile 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:[email protected]'
的onCreate
viewPager.setPageTransformer(true, new DefaultTransformer());
您可以通過更改第二個參數得到一些非標準efects,雖然不是所有的人好好工作。
- 1. Android中的ViewPager滯後問題
- 2. Viewpager Recyclerview滾動滯後
- 3. 首次刷卡後Android ViewPager動畫滯後
- 4. Viewpager的刷卡滯後問題
- 5. 滯後onClickListeners Android
- 6. android gps滯後
- 7. Android drag ImageView非常滯後
- 8. Android上傳 - 手機滯後
- 9. ListView非常滯後 - Android
- 10. Android textview選框滯後
- 11. jQuery slideToggle Android的滯後
- 12. 滯後與ViewPager的模糊和四捨五入的圖像
- 13. viewpager滯後listview有太多的項目時
- 14. ViewPager裏面的攝像頭沒有滯後(像Snapchat)?
- 15. setImageDrawable後滯後
- 16. Android ViewPager裏面ViewPager
- 17. android gridview在滾動上的滯後
- 18. VLC攝像頭流到Android滯後
- 19. 防止android鍵盤造成滯後
- 20. Android地圖「滯後」與幾個標記
- 21. Android紋波效應滯後於片段
- 22. Android應用程序活動滯後
- 23. Android NestedScrollView在上下滾動時滯後
- 24. Android上的Google地圖滯後
- 25. android EditText輸入文字滯後
- 26. Android投幣模擬器滯後
- 27. ListView在android中的滾動滯後
- 28. Web應用程序滯後於Android
- 29. 滯後是由於在Android的
- 30. ListView在android中的滾動滯後
只是一個小的更正,它是'viewPager.setOffscreenLimit(size)'。儘管如此,謝謝! –