Android 2.3和4.1上的android setOnTouchListener行为不同

时间:2013-04-02 05:30:04

标签: android ontouchlistener

我使用setOnTouchListener来抓取MotionEvent.ACTION_DOWNMotionEvent.ACTION_MOVE,以便在点击时移动视图。

Bt在三星S3(4.1.1)上工作正常,但在另一个Android 2.3.3上无效(无法捕获MotionEvent.ACTION_MOVE)。

任何评论都有帮助,谢谢。

=> => => 在Log.d()之后,捕获了MotionEvent.ACTION_DOWN和“MotionEvent.ACTION_MOVE”,但是在Android 4.1.1上可以在“MotionEvent.ACTION_MOVE”时移动视图,但在2.3.3上,视图不会移动。不知道为什么。似乎findViewById(R.id.layoutMapMemoPhoto).invalidate()在2.3.3上不起作用。

public boolean onTouch(View v, MotionEvent event) {    

    FrameLayout.LayoutParams lParams = null;    
    final int X = (int) event.getRawX();    
    final int Y = (int) event.getRawY();    

    switch (event.getAction() & MotionEvent.ACTION_MASK) {    
    case MotionEvent.ACTION_DOWN:    
       lParams = (FrameLayout.LayoutParams) v.getLayoutParams();    
       yDeltaImageView = Y - lParams.topMargin;    
       Log.d("DOWN");    
       break;    


    case MotionEvent.ACTION_MOVE:    
       lParams = (FrameLayout.LayoutParams) v.getLayoutParams();    

       lParams.topMargin = Y - yDeltaImageView;    
       v.setLayoutParams(lParams);    
       Log.d("MOVE");    
       break;    
  }    

findViewById(R.id.id_of_parent_view).invalidate();    


return true;  
}      

0 个答案:

没有答案