android 解決ViewPager加載大量圖片內(nèi)存溢出問題
1.大家都知道為ViewPager構(gòu)建適配器繼承PagerAdapter,怎么構(gòu)建就不說了。Viewpager會默認加載當前頁和當前頁的左右兩頁。一開始當前頁是下標0,所以一開始默認加載第0頁(指下標,下同)和第1頁。當你向右滑動,當前頁為第1頁時,ViewPager會加載第2頁,這時一共有3頁存在(第0,1,2頁)。再向右滑動,當前頁為第2頁時,會移除第0頁,加載第3頁,同理向左滑動當前頁為第1頁時,會移除第3頁。這么說應該懂了吧。
知道了上面的原理,就可以讓ViewPager始終只加載3頁的圖片。加載是執(zhí)行instantiateItem(...)方法,移除是執(zhí)行destroyItem(...)方法,可以在instantiateItem(...)里加載某一頁的圖片,在destroyItem(...)里回收某一頁的圖片。附上代碼:
2.代碼實例:
package com.example.test; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; import android.widget.ImageView; public class TestActivity extends Activity{ private ViewPager mPager; private ArrayList<View> views; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); views=new ArrayList<View>(); views.add(new ImageView(this)); views.add(new ImageView(this)); views.add(new ImageView(this)); views.add(new ImageView(this)); views.add(new ImageView(this)); views.add(new ImageView(this)); views.add(new ImageView(this)); views.add(new ImageView(this)); mPager=new ViewPager(this); mPager.setAdapter(new MyPagerAdapter()); setContentView(mPager); } class MyPagerAdapter extends PagerAdapter{ @Override public void destroyItem(View container, int position, Object object) { //在此次回收圖片 //........回收代碼 //移除頁面 ((ViewPager)container).removeView(views.get(position)); } @Override public Object instantiateItem(View container, int position) { // 在此次加載圖片 //......加載圖片代碼 //加載頁面 ((ViewPager)container).addView(views.get(position), 0); return views.get(position); } @Override public int getCount() { // TODO Auto-generated method stub return views.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return false; } } }
- Android使用ViewPager加載圖片和輪播視頻
- Android開發(fā)之使用ViewPager實現(xiàn)圖片左右滑動切換效果
- Android ViewPager實現(xiàn)圖片輪播效果
- Android 利用ViewPager實現(xiàn)圖片可以左右循環(huán)滑動效果附代碼下載
- 使用ViewPager實現(xiàn)左右循環(huán)滑動及滑動跳轉(zhuǎn)
- 仿網(wǎng)易新聞客戶端頭條ViewPager嵌套實例
- Android利用ViewPager實現(xiàn)滑動廣告板實例源碼
- Android App中ViewPager所帶來的滑動沖突問題解決方法
- Android ViewPager中顯示圖片與播放視頻的填坑記錄
相關文章
Android SQLite操作之大數(shù)據(jù)處理與同時讀寫方法
這篇文章主要介紹了Android SQLite操作之大數(shù)據(jù)處理與同時讀寫方法,實例分析了Android操作SQLite時基于事務的數(shù)據(jù)緩存與批量插入技巧,以及同時讀寫的相關實現(xiàn)方法與注意事項,需要的朋友可以參考下2016-07-07Android RecyclerView 數(shù)據(jù)綁定實例代碼
本文主要介紹Android RecyclerView 數(shù)據(jù)綁定的資料,這里詳細說明如何實現(xiàn) Android RecyclerView的數(shù)據(jù)綁定,并附示例代碼,有需要的小伙伴可以參考下2016-09-09Android?Spinner和GridView組件的使用示例
Spinner其實是一個列表選擇框,不過Android的列表選擇框并不需要顯示下拉列表,而是相當于彈出一個菜單供用戶選擇,GridView是一個在二維可滾動的網(wǎng)格中展示內(nèi)容的控件。網(wǎng)格中的內(nèi)容通過使用adapter自動插入到布局中2022-03-03關于Android中ListView嵌套GridView的問題
在Android開發(fā)的過程中可能需要用到listview嵌套gridview的場景,但是在嵌套過程中也許會遇到問題,我們下面一起來看看是什么問題以及如何解決。2016-08-08Android Compose自定義TextField實現(xiàn)自定義的輸入框
眾所周知Compose中默認的TextField和OutlineTextField樣式并不能滿足所有的使用場景,所以自定義TextField就成了必備技能。本文將自定義TextField實現(xiàn)自定義的輸入框,感興趣的可以了解一下2022-03-03