2014-11-17 4 views
0

나는 그 위에보기를 걸고 가로 방향으로 만 움직이는 레이아웃을 가지고 있습니다. 나는 그럭저럭 할 수 있었다. 그러나 문제는 끌기가 매우 매끄럽지 않다라는 것이다, 그것은 흔들리고, 때때로 잘못된 좌표에서 끝난다.onTouchEvent에서보기가 사라지고 위로 올라갑니다.

내가 그보기로 많이 놀면 그 외에도 레이아웃에서 사라집니다.

여기에 무 XML 파일

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="300dip" 
    android:id="@+id/graph" 
    android:orientation="vertical" 
    android:background="#ffffff" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"> 

    <View 
     android:id="@+id/drag_line" 
     android:layout_width="50dp" 
     android:visibility="visible" 
     android:background="@drawable/line" 
     android:layout_gravity="center_horizontal|top" 
     android:layout_height="170dp" 
     android:src="@drawable/line" /> 

</FrameLayout> 

여기 내가보기에는 onTouch 이벤트 핸들러는, 내가 ACTION_Up에 조건을 처리하는

line.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      final int action = motionEvent.getAction(); 
      final int x = (int) motionEvent.getRawX(); 
      final int y = (int) motionEvent.getRawY(); 


      switch (action & MotionEvent.ACTION_MASK) { 
      `enter code here` case MotionEvent.ACTION_MOVE:{ 
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams(); 
        int currentX = (int) motionEvent.getX(); 
        params.rightMargin = (params.rightMargin - (currentX)); 
        params.leftMargin = (params.leftMargin + (currentX)); 
        line.setLayoutParams(params); 
        line.invalidate(); 
        break; 
       } 
       case MotionEvent.ACTION_UP: { 

         dynamicUpdate(line.getX()); 
         touchFlag = true; 

       } 
      } 
      return true; 
     } 
    }); 

입니다.

왜 화면이 터치 동작에서 레이아웃 위에 떨리는 지 이해하지 못하고 때로는 사라지는 경우가 있습니다.

+0

이제는 도움이 될지 모르겠지만 어쨌든 그것을 놓으십시오. 이 질문은 http://stackoverflow.com/questions/16273249/android-ontouchevent-coordinates-skip-around에서 볼 수 있습니다. – xip

답변

0

동일한 문제가 있었는데 event.getX()은보기의 좌표입니다. 보기가 움직이면 화면의 같은 지점 좌표가 바뀌므로 흔들립니다. event.getRawX()event.getRawY()

관련 문제