詳細分析Android viewpager 無限迴圈滾動圖片

來源:互聯網
上載者:User

標籤:

    由於最近在忙於項目,就沒時間更新部落格了,於是趁著周日在房間把最近的在項目中遇到的技術總結下。最近在項目中要做一個在viewpager無限滾動圖片的需求,其實百度一下有好多的例子,但是大部分雖然實現了,但是講的都不清楚,我查了很多資料,我就知道position/list.size().但是怎麼用,我還是不明白。我後來看了百度工程師任玉剛的迴圈廣告位組件的實現突然明白了無限滾動的原理。總結如下:

  1.要在int getCount() 方法裡 寫 return BANNER_SIZE。  這個 BANNER_SIZE 是一個定義好的常量,最好定義大一點,比如1000、10000。我以前對這個方法的傳回值到底表示什麼意思我不太明白。如果寫成 return list.size()那就好懂。我覺得這個返回列表的可能性比較大,因為這個viewpager的圖片是從伺服器端返回的,數量和地址隨時會發生變化的。返回大一點的值如1000是viewpager表示這個viewpager你可以在上面滑動1000下。如果你只有3張圖片,你不停的滑動,讓這3張圖片來回顯示,也就是讓position 0 1 2 0 1 2 0 1 2..... 不就是你想要的無限迴圈滑動嗎? 那麼這個怎麼讓它迴圈滑動呢。那麼就要在實現Object instantiateItem(ViewGroup container, int position) 方法。

2.  Object instantiateItem(ViewGroup container, int position) 

  如果是viewpager顯示服務端返回的圖片,要把下載網路的圖片代碼放在這裡寫,比如用imagerloader 下載圖片(順便贊下這個架構,使用起來非常方便,我真想發一份郵件感謝這個架構的作者,寫的太棒了,造福全世界的coder啊,不用不知道,用了嚇一跳)。好了,要想position是 0 1 2 0 1 2迴圈,那麼就得寫成position=position % list.size()(我覺得不是position %BANNER_SIZE, 不然就出現數組下標越界了,任玉剛的好像也寫錯了)  右邊的 postion是上面的getCount()傳回值的position。比如設定1000,那麼position就是 0 1 2 3 4 .......1000, 這樣左邊的position的值就是在 0 1..list.size()迴圈了。圖片集合的大小為3,那麼就是 0 1 2 0 1 2.....  而是顯示圖片的下表是就是始終在0 1 2迴圈了。這樣到你滑動到第四屏的時候,就顯示第一張,滑動第五屏就是第二張圖片,滑動第六屏就是第三張圖片,這樣以此類推。這樣就可以實現迴圈滑動了,但是真的是“無限”迴圈嗎? 如果你真的閑的沒事,不停的滑啊,滑啊,滑啊,肯定會在某個時候無法滑動了。這樣做的目的就是讓你覺得是無限滑動了。還有我的體會是instantiateItem像baseadpter的裡getview()方法  控制listview的每一個item的。viewpager顯示圖片實際上用imageview來顯示每一張圖片的,這個跟listview顯示圖片列表是一樣的道理。

詳細分析Android viewpager 無限迴圈滾動圖片

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.