android中廣告輪播圖總結

功能點:無限輪播、指示點跟隨、點擊響應。實現思路:android

一、指示點跟隨,指示點經過代碼動態添加,數量由圖片數量決定。網絡

     在viewpager的頁面改變監聽中,設置點的狀態選擇器enable,當前頁時,setEnable(true),非當前頁設置爲false。因爲圖片是從網絡獲取,數量不定,因此此處不能使用switch寫死,須要設置變量記錄當前和前一個。代碼以下:ide

           llAddPoint爲添加指示點的線性佈局佈局

           prePosition爲前一個位置,初始化時設爲0,newPosition爲當前位置 this

           int newPosition =position%imageViews.size();//使用最大值來進行無限輪播,因此須要取模。
           llAddPoint.getChildAt(newPosition).setEnabled(true);
           llAddPoint.getChildAt(prePosition).setEnabled(false);
           prePosition=newPosition;
spa

二、在activity的ondestroy方法中關閉輪播圖
xml

三、點擊響應在viewpager的適配器中instantiateItem方法裏設置,由於圖片爲網絡獲取,因此不能以設置id的方式設置點擊事件代碼:事件

        @Override
public Object instantiateItem(ViewGroup container, final int position) {
       ImageView iv = imageViews.get(position % imageViews.size());
       container.addView(iv);
        // 在這個方法裏面設置圖片的點擊事件
     iv.setOnClickListener(new View.OnClickListener() {
         @Override
        public void onClick(View v) {
        // 處理跳轉邏輯
          Toast.makeText(carouselActivity.this,"被點了"+position%imageViews.size(),Toast.LENGTH_SHORT).show();
         }
        });
      return iv;
}
圖片

 四、指示點使用shape畫出  下面是大小5dp  ,實心的灰色圓點。get

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
>
<solid android:color="@android:color/darker_gray"/>
<size android:height="5dp" android:width="5dp"/>
</shape>
相關文章
相關標籤/搜索