Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/9-e3818819

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Touchイベントの行方

device.png
上イメージのような、ビューが重なってる時のOnTouchEventの挙動が今までうやむやになっていたので確認してみました。
以下、サンプルソース。
        RelativeLayout parent = new RelativeLayout(this);
        parent.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                android.util.Log.v( "" + v.toString(),"root" );
                return true;
            }
        });
        setContentView(parent);
        
        OnTouchListener l = new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                    android.util.Log.v( "" +v.toString(),"" +((TextView)v).getText() );
                return false;
            }
        };
        
        TextView tex1 = new TextView(this);
        tex1.setText("MAKAN KOSAPPOU!");
        tex1.setOnTouchListener(l);
        parent.addView(tex1);
        
        TextView tex2 = new TextView(this);
        tex2.setText("KURIRIN");
        tex2.setOnTouchListener(l);
        parent.addView(tex2);
        
        TextView tex3 = new TextView(this);
        tex3.setText("GOKU");
        tex3.setOnTouchListener(l);
        parent.addView(tex3);
        
        TextView tex4 = new TextView(this);
        tex4.setText("D");
        tex4.setOnTouchListener(l);
        parent.addView(tex4);


RelativeLayoutに複数のTextViewを重ねて配置。
OnTouchの返却値がtrueの場合は上のビューに対するOnTouchでイベントが終了しますが、falseにした場合はすべてのビューに対して順番にタッチイベントが発生。

以下ログ。
log.png

rootであるRelativeLayoutに対してはログが2つ出ていますが、これはACTION_DOWNとACTION_UPです。
ぐりぐりしてACTION_MOVEを起こしまくると、RelativeLayoutに対するイベントを連続で拾いました。


android.view.View.OnTouchListenerのOnTouchの返却値は

Returns
True if the listener has consumed the event, false otherwise.


とありますが、falseの説明が適当杉じゃなイカ?
ソース内部を読み漁る気力はないですが、trueにした場合はイベントの消費、falseにした場合はtrueのとこまで貫通ってことで良い気がします。
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/9-e3818819

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。