2

표면을 터치하면 객체를 움직이는 코드가 작성되어 멋지게 작동합니다. 길게 누르는 수신기에 삽입하면 터치 리스너가 제대로 작동하지 않고 객체가 움직이지 않더라도 터치합니다. . 대화 상자를 열려면 긴 클릭이 필요합니다. 생성에터치 리스너 및 길게 누르는 수신기

:

sf = new SurfaceView(this); 
sf.setOnTouchListener(this); 
sf.setOnLongClickListener(this); 

롱 클릭에 :

public boolean onLongClick(View v) { 
    if (!changePositionMode){ 
     final Dialog dialog = new Dialog(this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.text_manager); 
     dialog.setTitle("Browser"); 
     dialog.setCancelable(true); 
     dialog.show(); 
    } 
    return false; 
} 

터치 리스너에이

public boolean onTouch(View v, MotionEvent event) { 
    Point p=new Point((int)event.getX(),(int)event.getY()); 
    if (event.getAction()==MotionEvent.ACTION_DOWN){ 
     }else if (object.isTouch(p)){ 
      changePositionMode=true; 
      x=event.getX(); 
      y=event.getY(); 
      draw(); 
      return true; 
     } 
    } 
    else if (event.getAction()==MotionEvent.ACTION_MOVE){ 
     t.changeTamplatePosition(event.getX()-x,event.getY()-y); 
     x=event.getX(); 
     y=event.getY(); 
     draw(); 
     return true; 
    } 
    else if (event.getAction()==MotionEvent.ACTION_UP){ 
     changePositionMode=false; 
    } 

    return false; 
} 
+0

touchClick 이벤트를 longClickListener에 전달하는 방법은이 답변을 참조하십시오. http://stackoverflow.com/questions/7387572/android-ontouch-with-onclick-and-onlongclick – Sanders

+0

long click well? 터치 이벤트에 문제가 있습니까? –

+0

문제는 터치 이벤트입니다. – tzahibs

답변

3

당신은 어리석은 실수를 수행. OnTouch (View, MotionEvent 이벤트) 함수에서 true 대신 false를 반환해야 컨트롤의 다른 리스너 (OnLongClickListener)가 활성 상태로 유지됩니다.

관련 문제