Behavior
タッチ イベントをインターセプトする必要があるカスタムを作成しようとしています。ドキュメントonInterceptTouchEvent()
には、イベント ストリームを引き継ぐためにtrue を返す必要があると記載onTouchEvent()
されています。これを行うACTION_DOWN
と、ACTION_CANCEL
イベントのみが受信されます。
すべてを接続した方法は次のとおりです。
//==============================================================================
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;
}
//--------------------------------------------------------------------------
}
//------------------------------------------------------------------------------
レイアウト 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()
ですか?