Android使用ViewPager實現(xiàn)輪播圖(自動和手動)

源碼鏈接
效果圖

自動手動輪播圖


具體功能:

1.自動輪播

2.手動輪播

3.監(jiān)聽點擊事件跳轉(zhuǎn)界面

4.每個圖片可加標(biāo)題(我的圖片顏色太鮮艷了,就沒有讓文字顯示)

實現(xiàn)步驟:

1.創(chuàng)建顯示圖片和文字描述的carousel_item.xml文件

carousel_item.xml

2.創(chuàng)建對應(yīng)的是實體類ImageTitleBean,定義imageId和title屬性

ImageTitleBean

3.使用幀布局顯示ViewPager和指示器的界面,圖片到第幾頁時指示器跟著改變,carousel.xml文件

carousel.xml

4.創(chuàng)建java類繼承自FrameLayout,動態(tài)地為上一步創(chuàng)建的界面添加數(shù)據(jù)以及設(shè)置顯示方式

4.1加載視圖carousel.xml,綁定ViewPager和放指示器的線性布局


4.2為適配器設(shè)置集合數(shù)據(jù),當(dāng)i=0時使用Glide框架加載最后一張圖片,標(biāo)題顯示最后一個標(biāo)題,當(dāng)i=最后一頁時,圖片加載第一張,標(biāo)題也同樣處理,其他的都按照加載第i-1張圖片處理

4.3創(chuàng)建適配器繼承自PagerAdapter,在instantiateItem方法中設(shè)置監(jiān)聽

接口回調(diào)步驟:

4.3.1創(chuàng)建接口OnItemClickListener,聲明方法onItemClick()

4.3.2聲明私有的監(jiān)聽器

4.3.3提供設(shè)置監(jiān)聽器的公共方法

4.3.4在點擊處實現(xiàn)onItemClick()方法

4.3為ViewPager設(shè)置適配器,從當(dāng)前從1開始,為ViewPager設(shè)置頁面監(jiān)聽,當(dāng)頁面被選中時,指示器會放大;


如果界面滾動了,獲取當(dāng)前的item,如果item==0,就設(shè)置為最后一個,如果,item==count+1,就設(shè)置為第一個,這樣可以實現(xiàn)第一個圖片和最后一個圖片切換時不會出現(xiàn)閃現(xiàn)或卡頓的畫面

5.設(shè)置指示器,創(chuàng)建和圖片數(shù)量同樣多的視圖,布置間距,大小和背景資源,將它們添加進入LinearLayout,默認(rèn)第一個未選中,其他未選中。


這里用到了SparseBooleanArray,它是用來存儲布爾值的,類似于key,value,根據(jù)其中存放的值來判斷是否被選中

6.使用多線程控制圖片每3秒換一次,handler發(fā)送消息,Runnable執(zhí)行任務(wù)設(shè)置CurrentItem值變化



7.在MainActivity中設(shè)置數(shù)據(jù)源

8.實現(xiàn)輪播圖的監(jiān)聽方法


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容