ViewPager 滑动一半的判断方法以及左滑右滑判断
生活随笔
收集整理的這篇文章主要介紹了
ViewPager 滑动一半的判断方法以及左滑右滑判断
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
做項目的時候,會碰到用viewpager + fragments去實現多頁滑動。有些時候需要完成:界面在滑動到一半或是一半以上的時候,需要把title之類的切換到下一個頁面。這個時候僅僅依賴Viewpager的接口是不能判斷,這里提供一個方法:判斷viewpager是左滑還是右滑,同時對滑過一半的時候(這個參數可以調),進行相關操作。
//定義兩個變量,這個兩個變量是表示滑動時候,positionOffset 是從大到
//小的變化,還是從小到大的變化。用于在滑動時候,避免多次調用一個方法
private boolean isSmallToBig = true;
private boolean isBigToSmall = false;
//記錄上一次滑動的positionOffsetPixels值
private int lastValue = -1;
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (positionOffset != 0) {
mCurrentPage = position;
boolean isLeft = true;
if (lastValue >= positionOffsetPixels) {
//右滑
isLeft = false;
} else if (lastValue < positionOffsetPixels) {
//左滑
isLeft = true;
}
setIndiactorView(positionOffset,isLeft);
}
lastValue = positionOffsetPixels;
}
private void setIndiactorView(float positionOffset,boolean isLeft) {
//設定滑動的邊界,這里設置的滑動到一半
float radiusOffsetHead = 0.5f;
//如果滑動小于一半,通過isSmallToBig這個變量來避免多次調用
// initIndicatorView 方法
if (positionOffset <= radiusOffsetHead && !isSmallToBig) {
initIndicatorView(mCurrentPage);
isSmallToBig = true;
isBigToSmall = false;
} else if (positionOffset > radiusOffsetHead && !isBigToSmall) {
//超過一半。如果是左滑,就-1,如果是右滑,就+1
int currnt = isLeft ? mCurrentPage + 1 : mCurrentPage - 1;
initIndicatorView(currnt);
isBigToSmall = true;
isSmallToBig = false;
}
}
總結
以上是生活随笔為你收集整理的ViewPager 滑动一半的判断方法以及左滑右滑判断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么获取公众号二维码?
- 下一篇: Angular view contain