自定義控件 - ViewPager頁面指示器,輪播小圓點效果,具有三種風格

轉載請標明出處:http://blog.csdn.net/u013254166/article/details/79026116
本文出自: rhino博客 

     分享一個控件,可用於ViewPager頁面指示器,使用起來非常簡單方便。支持橫向、縱向兩種佈局,可以xml設置也可以動態設置。支持三種模式Mode:

      INSIDE: 滾動的小圓點被遮住,在整個圓點視圖的背後滾動。

      OUTSIDE: 滾動的小圓點在整個圓點視圖的上面滾動。

      SOLO沒有滾動動畫效果,直接選中。

   

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
	@Override
	public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
		mCircleIndicator1.setPosition(position, positionOffset);
		mCircleIndicator2.setPosition(position, positionOffset);
		mCircleIndicator3.setPosition(position, positionOffset);
	}

	@Override
	public void onPageSelected(int position) {
		mCircleIndicator4.setPosition(position);
	}

	@Override
	public void onPageScrollStateChanged(int state) {
	}
});
      Demo採用ViewPager演示,也適用於RecyclerView,移植性強,拷貝到工程裏面就能用。只需要在對應的回調接口CircleIndicator的setPosition方法即可。

注意這裏有兩個setPosition方法:

/**
 * This method will be invoked when the dest page is selected.
 *
 * @param position The position of current page selected.
 */
public void setPosition(int position)
      這個接口調用後立即選中,並刷新視圖。

/**
 * This method will be invoked when the current page is scrolled, either as part
 * of a programmatically initiated smooth scroll or a user initiated touch scroll.
 *
 * @param position The position of next page that will be show.
 * @param positionOffset Value from [0, 1) indicating the offset from the page at position.
 * @see Mode#INSIDE
 * @see Mode#OUTSIDE
 */
public void setPosition(int position, float positionOffset)
      這個接口用於顯示動畫效果,前提是Mode必須爲INSIDE或OUTSIDE,這裏的參數直接仿造ViewPager.OnPageChangeListener.onPageScrolled方法:

      position: 接下來將選中的頁面索引。

      positionOffset: 滾動到下一個頁面的百分比,取值爲[0, 1)。如果頁面向前滑動positionOffset 從1.0減至0,如果頁面向後滑動positionOffset 從0加至1.0。



最後附上源碼下載鏈接,點擊下載。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章