解決ViewPager和SlidingPaneLayout的滑動(dòng)事件沖突問題
問題描述:
ViewPager和SlidingPaneLayout的滑動(dòng)事件沖突。
問題分析:
在手指左右滑動(dòng)時(shí),SlidingPaneLayout會(huì)屏蔽ViewPager的滑動(dòng)事件。
解決辦法:
自定義SlidingPaneLayout類
import android.content.Context;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.widget.SlidingPaneLayout;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
public class PagerEnabledSlidingPaneLayout extends SlidingPaneLayout {
private float mInitialMotionX;
private float mInitialMotionY;
private float mEdgeSlop;
public PagerEnabledSlidingPaneLayout(Context context) {
this(context, null);
}
public PagerEnabledSlidingPaneLayout(Context context,
AttributeSet attrs) {
this(context, attrs, 0);
}
public PagerEnabledSlidingPaneLayout(Context context,
AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
ViewConfiguration config = ViewConfiguration.get(context);
mEdgeSlop = config.getScaledEdgeSlop();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (MotionEventCompat.getActionMasked(ev)) {
case MotionEvent.ACTION_DOWN: {
mInitialMotionX = ev.getX();
mInitialMotionY = ev.getY();
break;
}
case MotionEvent.ACTION_MOVE: {
final float x = ev.getX();
final float y = ev.getY();
if (mInitialMotionX > mEdgeSlop && !isOpen() && canScroll(this, false,
Math.round(x - mInitialMotionX), Math.round(x), Math.round(y))) {
MotionEvent cancelEvent = MotionEvent.obtain(ev);
cancelEvent.setAction(MotionEvent.ACTION_CANCEL);
return super.onInterceptTouchEvent(cancelEvent);
}
}
}
return super.onInterceptTouchEvent(ev);
}
}
以上這篇解決ViewPager和SlidingPaneLayout的滑動(dòng)事件沖突問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android 中CheckBox多項(xiàng)選擇當(dāng)前的position信息提交的示例代碼
這篇文章主要介紹了Android 中CheckBox多項(xiàng)選擇當(dāng)前的position信息提交的示例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-07-07
Android compose氣泡升起和水滴下墜動(dòng)畫實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Android compose氣泡升起和水滴下墜動(dòng)畫實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android使用廣播(BroadCast)實(shí)現(xiàn)強(qiáng)制下線的方法
這篇文章主要介紹了Android使用廣播(BroadCast)實(shí)現(xiàn)強(qiáng)制下線的方法,實(shí)例分析了Android廣播BroadCast控制activity關(guān)閉的具體步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-01-01
Android RecyclerView 基礎(chǔ)知識(shí)詳解
本文主要介紹Android RecyclerView的資料,這里對(duì)RecyclerView 的基礎(chǔ)知識(shí)做了詳細(xì)講解,并附簡單示例代碼幫助大家學(xué)習(xí)參考,有需要的小伙伴可以參考下2016-09-09
自定義滑動(dòng)按鈕為例圖文剖析Android自定義View繪制
這篇文章主要介紹了自定義滑動(dòng)按鈕的例子,圖文剖析Android自定義View繪制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03
Android中替換WebView加載網(wǎng)頁失敗時(shí)的頁面
這篇文章主要介紹了Android中替換WebView加載網(wǎng)頁失敗時(shí)的頁面,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01
Android中關(guān)于相對(duì)布局RelativeLayout的技巧匯總
RelativeLayout是相對(duì)布局控件,以控件之間相對(duì)位置或相對(duì)父容器位置進(jìn)行排列。下面這篇文章主要給大家介紹了關(guān)于Android中相對(duì)布局RelativeLayout的一些技巧,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02
Android啟動(dòng)頁出現(xiàn)白屏、黑屏的解決方案
這篇文章主要給大家介紹了關(guān)于Android啟動(dòng)頁出現(xiàn)白屏、黑屏的解決方案,這一個(gè)需求是每位Android開發(fā)者都需要的,最近發(fā)現(xiàn)了一個(gè)不錯(cuò)的解決方法,所以分享給大家,文中給出了詳細(xì)的介紹,需要的朋友可以參考下。2017-12-12

