Я пытаюсь написать пользовательский Behavior
, который должен будет перехватить события касания. documentation говорит, что я должен вернуть true из onInterceptTouchEvent()
, чтобы захватить поток событий, а затем вернуть значение true от onTouchEvent()
до тех пор, пока я хотел бы продолжать получать события. Когда я это делаю, получаются только ACTION_DOWN
и ACTION_CANCEL
события.Пользовательский координаторLayout Поведение теряет сенсорный поток ввода после первого события
Вот как я зацепил все вверх:
//==============================================================================
public class CustomBehavior extends CoordinatorLayout.Behavior<View> {
//--------------------------------------------------------------------------
public CustomBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
Log.d("AppTag", "SlidingCardBehavior");
}
//--------------------------------------------------------------------------
@Override public boolean onInterceptTouchEvent(CoordinatorLayout coordinator, View child, MotionEvent event) {
Log.d("AppTag", "onInterceptTouchEvent() "
+ MotionEvent.actionToString(event.getAction()));
return true;
}
//--------------------------------------------------------------------------
@Override public boolean onTouchEvent(CoordinatorLayout coordinator, View child, MotionEvent event) {
Log.d("AppTag", "onTouchEvent() "
+ MotionEvent.actionToString(event.getAction()));
return true;
}
//--------------------------------------------------------------------------
}
//------------------------------------------------------------------------------
Layout XML:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HomeActivity">
<FrameLayout android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.v7.widget.CardView
android:id="@+id/front"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="tv.shuriken.android.behavior.CustomBehavior" />
</android.support.design.widget.CoordinatorLayout>
Когда я проверить это, ACTION_DOWN
принимается, как ожидалось, но не ACTION_MOVE
или ACTION_UP
событий нет. Когда я снова касаюсь, я сразу получаю ACTION_CANCEL
, а затем еще ACTION_DOWN
.
В документации это звучит так просто, я убежден, что что-то пропустил. Как получить непрерывный поток событий в onTouchEvent()
?