0

ImageView オブジェクトにタッチ イベント リスナーをアタッチしました。

imageview_obj.setOnTouchListener(new View.OnTouchListener()
{
    public boolean onTouch(View v, MotionEvent event) 
    {
            Log.i(" info "," message");                        
            return true;
        }
     });

問題は、imageview_obj に触れると、コールバックが複数回 (3 回から 4 回) トリガーされることです。

今私の質問は

  1. コールバックが複数回トリガーされるのはなぜですか?

  2. タッチごとに1回トリガーされるように、onTouchListenerをどのようにアタッチすればよいですか?

4

2 に答える 2

1
 imageview_obj.setOnTouchListener(new View.OnTouchListener()
    {
        public boolean onTouch(View v, MotionEvent event) 
        {
                Log.i(" info "," message");                        
                return true;
                  switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
//Do code here for down
               return true;
            case MotionEvent.ACTION_MOVE:
            return true;
            case MotionEvent.ACTION_UP:
//Do code here for up
            return true;
                 }
            }
         });
于 2013-04-19T10:05:26.750 に答える
0

タッチイベントにはダウン、アップ、ムーブなどのイベント時間があるため、複数のアクションでトリガーされたため、ダウンタイムやアップタイムなどの特定のイベントでこれを実装する必要があります

public boolean onTouch(View v, MotionEvent event) 
{

    int action = event.getAction();
    switch(action){

        case Down_Action: // MotionEvent class field 
        Log.i(" info "," message");      
        break;
        case Up_Action:
        Log.i(" info "," message");      
        break;
        case Move_action:
        Log.i(" info "," message");      
        break;

    }

    return true;
}
于 2013-04-19T09:52:38.323 に答える