2011-01-23 18 views
1

私はAndroidを初心採用していますが、これまで以上に気持ちがいいです。 私はSurfaceViewを拡張私の見解を持っており、そこに私はonTouchEventをオーバーライドして、内部のこのテストコード置く:私はエミュレータでアプリケーションを実行すると次にエミュレータでACTION_MOVEを作成することはできません

if (event.getAction() == MotionEvent.ACTION_MOVE) 
    { 
    return true; 
    } 
    return false; 

をデバッグモードで(Eclipseを使用して)、方法はありませんIそれを真実に戻すことができます。私はクリックし、クリックしてドラッグしてから離しますが、何時でもevent.getAction == 0になります。

私には何が欠けていますか?

答えて

0

getAction()は、実際のアクションフラグとそのイベントを生成したポインタのインデックス(マルチタッチで使用される)の組み合わせを返します。

if (event.getAction() & MotionEvent.ACTION_MASK == 
           MotionEvent.ACTION_MOVE) { ... 

か、API> = 8にしている場合は、直接getActionMasked()を使用することができます:あなたはMotionEvent.ACTION_MASKとのANDを行うことができます唯一のアクション部分を持つように

。これは、switchでテストする必要がある場合に便利です。

similar question here

+0

ありがとうございました。より良いデバッグのために、これらのトリックを学ぶことは良いことです。私は最終的に古い試行錯誤の方法で何が間違っているかを見つけました。私はなぜそれがまだ分かりませんが、あなたが偽を返すと、行動を処理できません。私はそれを "false false"に変更しました。 – Sergio

2

あなたはこの問題を回避するために、 "OnTouchEvent" 方式で "真" を返す必要があります。

関連する問題