4

私はimageViewを持っています。imageViewにパン、ピンチを使用しています。時々、imageView を削除する必要があります。そこで、画像の削除に OnLongClickListener を使用しました。ロングクリックを使用すると、imageViewの削除が行われます。しかし、パンにOnTouchListenerを使用すると、imageView OnLongPressのピンチがアクティブになり、imageViewがビューから削除されます。これを解決するには?

コード:

    imageView.setOnLongClickListener(new OnLongClickListener(){

     @Override
     public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
                                    imageView.setVisibility(View.GONE);

      return true;
        }

  });



   imageView.setOnTouchListener(new View.OnTouchListener() {
       final Handler handler = new Handler(); 
    Runnable mLongPressed = new Runnable() { 
        public void run() { 
            Log.i("", "Long press!");
        }   
    };



     @Override
       public boolean onTouch(View v,MotionEvent event) {
        // TODO Auto-generated method stub

    if(event.getAction() == MotionEvent.ACTION_DOWN)
        handler.postDelayed(mLongPressed, 1000);
    if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() ==     MotionEvent.ACTION_UP))
        handler.removeCallbacks(mLongPressed);



    layoutParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams();

        switch(event.getAction())
         {
     case MotionEvent.ACTION_DOWN :
      {
          parms = (RelativeLayout.LayoutParams) imageView.getLayoutParams();


      dx = event.getRawX() - parms.leftMargin;
      dy = event.getRawY() - parms.topMargin;


        }
    break;
      case MotionEvent.ACTION_MOVE :
        {
      x = event.getRawX();
      y = event.getRawY();
        parms.leftMargin = (int) (x-dx);
        parms.topMargin = (int) (y - dy);
                                            imageView.setLayoutParams(parms);

     }
     break;
     case MotionEvent.ACTION_UP :
     {

        }
       break;
    }
     return false;
       }
       });

      }

   });
4

4 に答える 4

4

以下のコードを試してください:-

imageView.setOnClickListener(new View.OnClickListener()
    Handler handle = new Handler();
            handle.postDelayed(new Runnable() {

                @Override
                public void run() {
    imageView.setVisibility(View.GONE);

},1000);
}

1000は好きなように増やすことができる時間です..

于 2013-06-25T13:11:50.753 に答える