今天介绍一下多点触摸交互处理,过程中会有几个小demo。首先,我为什么要有学习这块呢?因为他涉及到图片的缩放啊,类似的一些操作,现在的app都必不可少。要想做图片的缩放,首先要知道手指在哪里。
第一,如何获取手指在滑动中的坐标?
这个可以通过view的onTouchListener实现,在过程中实现,一定一定要注意,把onTouch的方法返回true,默认是false的,因为false就代表只监听按下那个操作,移动和手指离开不会操作。例子代码如下:
content_main.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN://按下
Log.d(TAG, "onTouch: 按下:" + "X:" + motionEvent.getX() + "|y:" + motionEvent.getY() );
break;
case MotionEvent.ACTION_MOVE: //移动
Log.d(TAG, "onTouch: 移动"+ "X:" + motionEvent.getX() + "|y:" + motionEvent.getY());
break;
case MotionEvent.ACTION_UP://手指离开
Log.d(TAG, "onTouch: 手指离开"+ "X:" + motionEvent.getX() + "|y:" + motionEvent.getY());
break;
}
return true;
}
});
conteng_main,是整个布局文件。
这样就可以监听到手指滑动和滑动的具体坐标。有了这个,我们可以做一个小例子,比如,手指滑动的时候,让图片跟着移动。做法是这样的,获取手指移动的时候坐标设置给图片的左边距和上边距。例子代码如下:
case MotionEvent.ACTION_MOVE: //移动
Log.d(TAG, "onTouch: 移动"+ "X:" + motionEvent.getX() + "|y:" + motionEvent.getY());
ivRl = (RelativeLayout.LayoutParams)imageView.getLayoutParams();
ivRl.leftMargin = (int)motionEvent.getX();
ivRl.topMargin = (int)motionEvent.getY();
imageView.setLayoutParams(ivRl);
break;