這兩天面試,回來收到一個(gè)要求要實(shí)現(xiàn)輪播圖的無限輪播效果昌罩。
實(shí)現(xiàn)這個(gè)效果的方法很多種也很簡單硫豆,最常用的一直前后各加一個(gè)ImageView,滑到這個(gè)ImageView的時(shí)候跳轉(zhuǎn)到第一個(gè)圖片或者最后一個(gè)圖片迅腔,實(shí)現(xiàn)一個(gè)錯(cuò)覺。
對于上面這個(gè)方法我覺得功能上是實(shí)現(xiàn)了靠娱,但是還可以具體做些內(nèi)存上的優(yōu)化沧烈。我在網(wǎng)上搜集了一些資料,比較感興趣的是基于三張或者兩張ImageView的重用像云。之前嘗試了三張ImageView的重用锌雀,效果還可以,中間有很多小坑迅诬,自己給填平了腋逆。至于兩張ImageView的重用。侈贷。惩歉。這個(gè)網(wǎng)上好像有人做出來了,但我思路可能不對,這個(gè)暫時(shí)沒實(shí)現(xiàn)撑蚌。
那么說一下三張ImageView的重用思路上遥。用戶在操作輪播圖的時(shí)候,不外乎三個(gè)狀態(tài)争涌,不動(dòng)粉楚、向左滑、向右滑亮垫。我們完全可以實(shí)現(xiàn)一個(gè)效果模软,左中右三個(gè)控件,控件不變化只變化控件上面的內(nèi)容饮潦,這樣就達(dá)到了重用的效果燃异。
具體流程:
1.展示給用戶的始終是中間的一個(gè)ImageView;
2.用戶向左或向右滑動(dòng)結(jié)束后继蜡,重新為ImageView賦值特铝,設(shè)置ScrollView的偏移,把中間的ImageView重新拉回中間位置壹瘟;
這樣說起來似乎很簡單,但中間的邏輯也是比較麻煩的鳄逾。寫了個(gè)Demo放在了cocoachina稻轨,有興趣的同學(xué)可以下載看一下。
Demo地址:http://code.cocoachina.com/view/130080