日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 自定义viewpager指示器,Android自定义View Flyme6的Viewpager指示器

發布時間:2024/1/8 Android 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 自定义viewpager指示器,Android自定义View Flyme6的Viewpager指示器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最新更新的Flyme6整體效果不錯,動畫效果增加了很多了,看了看flyme6的Viewpager指示器,覺得有點意思,就模仿寫了一下,整體效果如下:

Gradle

allprojects {

repositories {

maven { url 'https://jitpack.io' }

}

}

dependencies {

compile 'com.github.Dawish:FlymeTabStrip:v1.0.2'

}

Attrs

Sample

代碼解釋

指示器的動畫效果,主要依賴Viewpager的滑動監聽器,在Viewpager的滑動過程中不斷重繪只是控件就可以實現指示器的位移和縮放動畫效果。首先我們講解一下ViewPager的三個滾動監聽方法:

/**

* viewPager狀態改變監聽

*

*/

private class PagerStateChangeListener implements OnPageChangeListener {

/**

* viewpager狀態監聽

* @param state

*/

@Override

public void onPageScrollStateChanged(int state) {

if (state == ViewPager.SCROLL_STATE_IDLE) { // 0 空閑狀態 pager處于空閑狀態

scrollToChild(viewPager.getCurrentItem(), 0);

}else if(state == ViewPager.SCROLL_STATE_SETTLING){ // 2 正在自動沉降,相當于松手后,pager恢復到一個完整pager的過程

}else if(state == ViewPager.SCROLL_STATE_DRAGGING){ // 1 viewpager正在被滑動,處于正在拖拽中

}

}

/**

* viewpager正在滑動,會回調一些偏移量

* 滾動時,只要處理指示器下方橫線的滾動

* @param position 當前頁面

* @param positionOffset 當前頁面偏移的百分比

* @param positionOffsetPixels 當前頁面偏移的像素值

*/

@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

currentPosition = position;

currentPositionOffset = positionOffset;

// 處理指示器下方橫線的滾動,scrollToChild會不斷調用ondraw方法,繪制在重繪下劃線,這就是移動動畫效果

scrollToChild(position, (int) (positionOffset * container.getChildAt(position).getWidth()));

invalidate();

}

/**

* page滾動結束

* @param position 滾動結束后選中的頁面

*/

@Override

public void onPageSelected(int position) {

// 滾動結束后的未知

selectedPosition = position;

// 更新指示器狀態

updateTabStyle();

}

}

其中最主要的方法就是:

/**

* viewpager正在滑動,會回調一些偏移量

* 滾動時,只要處理指示器下方橫線的滾動

* @param position 當前頁面

* @param positionOffset 當前頁面偏移的百分比

* @param positionOffsetPixels 當前頁面偏移的像素值

*/

@Override

public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

currentPosition = position;

currentPositionOffset = positionOffset;

// 處理指示器下方橫線的滾動,scrollToChild會不斷調用ondraw方法,繪制在重繪下劃線,這就是移動動畫效果

scrollToChild(position, (int) (positionOffset * container.getChildAt(position).getWidth()));

invalidate();

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的android 自定义viewpager指示器,Android自定义View Flyme6的Viewpager指示器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。