2013-03-16 66 views
1

我試圖在觸摸它時移動圖像。我意識到,當我移動時,圖像會產生奇怪的東西(它有時會很好地完成,而其他人則會移動到不同的地方)。我與該信息getX值Log.d,這就是我得到:onTouch在getX中給出奇怪的結果android

03-16 19:26:23.569: D/eventX:(15450): 23.0 
03-16 19:26:23.599: D/eventX:(15450): 91.0 
03-16 19:26:23.629: D/eventX:(15450): 20.0 
03-16 19:26:23.659: D/eventX:(15450): 89.0 
03-16 19:26:23.689: D/eventX:(15450): 17.0 
03-16 19:26:23.719: D/eventX:(15450): 87.0 
03-16 19:26:23.749: D/eventX:(15450): 14.0 
03-16 19:26:23.779: D/eventX:(15450): 85.0 
03-16 19:26:23.809: D/eventX:(15450): 11.0 
03-16 19:26:23.839: D/eventX:(15450): 83.0 
03-16 19:26:23.879: D/eventX:(15450): 8.0 

正如你可以看到一個是良好的值(即我撫摸它的位置的值)和其他有沒有意義。有人知道原因爲什麼?

這裏是代碼的和平,我使用...

head.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View arg0, MotionEvent ev) { 
      // TODO Auto-generated method stub 
      switch (ev.getAction()) { 


      case MotionEvent.ACTION_MOVE: { 
       RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(head.getLayoutParams().width, head.getLayoutParams().height); 
       Log.d("eventX:", ((Float)ev.getX()).toString()); 
       layoutParams.leftMargin = (int) ev.getX(); 
       head.setLayoutParams(layoutParams); 
       count = false; 

       break; 
      } 
+0

顯示你正在打印的代碼等 – 2013-03-16 18:37:57

+0

你有...如果你需要更多的代碼只是告訴我 – 2013-03-16 18:41:20

+1

如果你使用getRawX並且沒有強制轉換爲浮動並調用tostring,問題是否會持續存在?你不需要強制轉換或調用tostring。 – 2013-03-16 18:46:55

回答

2

使用典型getX()功能完全依賴於分派該MotionEvent並返回相對於該視圖的座標特定視圖。在你的情況下,似乎可能有多個視圖正在分派事件,並且你正在獲取多個意外值。

在任何情況下,使用getRawX()將允許您獲得一致的絕對座標,並解決所有不同座標的混淆。