在最近的项目中碰到需要用手指控制View移动的需求,实现的过程中发现View会随着手指的移动而抖动,并且抖动程度随着拖动距离的增大而增大。简化代码片段如下
view.setOnTouchListener(new OnTouchListener() {
float lastY;
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN)
lastY = event.getY();//获得起始纵坐标
if(event.getAction() == MotionEvent.ACTION_MOVE ){
//执行这一步时view会发生Y轴上的抖动并且抖动程度会随着ACTION_MOVE的执行次数而加剧
view.setTranslationY(event.getY()-lastY);
//这一步用来探明抖动的原因来自于event.getY()异常
Log.i("Y", event.getY()+"");
}
}
return false;
});