自定義Indicator,沒那么難~

在Android開發(fā)中,經常會有viewpager滑動指示器的功能,比較常用的:

上面兩種,用法自行Google,都比較簡單。但是,如果設計給的指示器是一個自己設計的圖或者其他的?又或者,確實不想因為一個頁面而進入一個第三方庫?那么,我們就需要自己去寫一個指示器了。

今天重點:

怎么自定義一個任何樣式的指示器呢?

  • 首先,其實要明白指示器與viewpager聯(lián)動的關聯(lián)在哪里
  • 其次,就是定義我們的指示器(我下面展示的是指示器與所指示的內容徹底分離,當然可以放在一起,但重點是講指示器~)

那么,就開始吧。

聯(lián)動的關系
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {
            FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) indicator.getLayoutParams();
            float left = i * viewWidth + viewWidth / 2 - indicator.getMeasuredWidth() / 2 + v * viewWidth;
            params.leftMargin = (int) left;
            indicator.setLayoutParams(params);
            if (mListener != null) {
                mListener.onPageScrolled(i, v, i1);
            }
        }

        @Override
        public void onPageSelected(int i) {
            if (mListener != null) {
                mListener.onPageSelected(i);
            }
        }

        @Override
        public void onPageScrollStateChanged(int i) {
            if (mListener != null) {
                mListener.onPageScrollStateChanged(i);
            }
        }
    });
  • 重點就是onPageScrolled這個回調,三個參數
  • position (i) 當前頁面,你點擊滑動的頁面
  • offset (v) 當前頁面偏移的百分比
  • offsetPixels (i1) 當前頁面偏移的像素位置
  • indicator 是我的指示器view(ImageView)
  • viewWidth 是指示器所指示的內容的寬度
  • 通過設置leftMargin,來動態(tài)改變indicator的位置

使用上述方式,其實就是將你的指示器view與viewpager滑動關聯(lián),即滑動viewpager時,指示器隨著滑動的偏移量移動位置

還有一種方式,是在onPageScrolled里增加view的滑動動畫,但是這樣就無法隨著viewpager偏移去偏移了。

float left = i * viewWidth + viewWidth / 2 - indicator.getMeasuredWidth() / 2 + v * viewWidth;
indicator.animate().translationX(left).setDuration(200).start();

到此,你的indicator就可以隨便滑動了,隨便你設置什么圖片
實現上述的indicator,其實就這么簡單~

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

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 內容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 47,176評論 22 665
  • 1996年以前,我的頭發(fā)都是奶奶給我剪得。 那時候還不懂什么叫發(fā)型,劉海齊眉,兩側頭發(fā)和耳朵垂齊。甜甜的小妹子,奶...
    北方姑娘芷若閱讀 1,165評論 5 5
  • 鵲踏枝——秋夢 張石牌 2017-08-11 夜 又是一年夏已歸,初秋乍到,早晚清涼回。夜夜笙歌把酒醉,夢...
    天宇無緣閱讀 272評論 0 2
  • 從過了年到現在,我一直都不在狀態(tài),同事的離職影響力我,年底那一丟丟的獎金影響力我,生活環(huán)境的變化給我?guī)淼奶嗵?..
    alwayup閱讀 292評論 0 1

友情鏈接更多精彩內容