Android中RecyclerView嵌套滑動沖突解決的代碼片段
在縱向RecyclerView嵌套橫向RecyclerView時,如果縱向RecyclerView有下拉刷新功能,那么內(nèi)部的橫向RecyclerView的橫向滑動體驗會很差.(只有純橫向滑動時,才能滑動內(nèi)部的橫向RecyclerView,否則滑動事件就會影響到下拉刷新),添加攔截判斷.
public class MySwipeRefreshLayout extends SwipeRefreshLayout {
private boolean mIsVpDragger;
private final int mTouchSlop;
private float startY;
private float startX;
public MySwipeRefreshLayout(Context context) {
super(context);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
public MySwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// 記錄手指按下的位置
startY = ev.getY();
startX = ev.getX();
// 初始化標(biāo)記
mIsVpDragger = false;
break;
case MotionEvent.ACTION_MOVE:
// 如果viewpager正在拖拽中,那么不攔截它的事件,直接return false;
if (mIsVpDragger) {
return false;
}
// 獲取當(dāng)前手指位置
float endY = ev.getY();
float endX = ev.getX();
float distanceX = Math.abs(endX - startX);
float distanceY = Math.abs(endY - startY);
// 如果X軸位移大于Y軸位移,那么將事件交給viewPager處理。
if (distanceX > mTouchSlop && distanceX > distanceY) {
mIsVpDragger = true;
return false;
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// 初始化標(biāo)記
mIsVpDragger = false;
break;
}
// 如果是Y軸位移大于X軸,事件交給swipeRefreshLayout處理。
return super.onInterceptTouchEvent(ev);
}
}
更多關(guān)于滑動功能的文章,請點擊專題: 《Android滑動功能》
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實現(xiàn)左上角(其他邊角)傾斜的標(biāo)簽(環(huán)繞效果)效果
這篇文章主要介紹了Android實現(xiàn)左上角(其他邊角)傾斜的標(biāo)簽(環(huán)繞效果)效果,本文通過圖文實例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
Android 中View.onDraw(Canvas canvas)的使用方法
這篇文章主要介紹了Android 中View.onDraw(Canvas canvas)的使用方法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09
Android編程簡單設(shè)置ListView分割線的方法
這篇文章主要介紹了Android編程簡單設(shè)置ListView分割線的方法,涉及Android布局簡單操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2017-02-02
Android App中的GridView網(wǎng)格布局使用指南
GridView布局所實現(xiàn)的就是類似于九宮格的矩陣界面效果,下面整理了Android App中的GridView網(wǎng)格布局使用指南,包括分割線的添加與自定義GridView的實現(xiàn)等技巧,需要的朋友可以參考下2016-06-06

