Android实现实现View滑动的滑动的6种方式种方式
本文实例为大家分享了Android实现View滑动的具体方法,供大家参考,具体内容如下
1.View的滑动简介的滑动简介
View的滑动是Android实现自定义控件的基础,同时在开发中我们也难免会遇到View的滑动的处理。其实不管是那种滑动的方
式基本思想都是类似的:当触摸事件传到View时,系统记下触摸点的坐标,手指移动时系统记下移动后的触摸的坐标并算出
偏移量,并通过偏移量来修改View的坐标。
实现View滑动有很多种方法,这篇文章主要讲解六种滑动的方法,分别是:layout()、offsetLeftAndRight()与
offsetTopAndBottom()、LayoutParams、动画、scollTo与scollBy和Scroller;在下一篇文章我们会详细介绍属性动画。
2.实现实现View滑动的六种方法滑动的六种方法
1.layout()
view进行绘制的时候会调用onLayout()方法来设置显示的位置,因此我们同样也可以通过修改View的left、top、right、bottom
这四种属性来控制View的坐标。首先我们要自定义一个View,在onTouchEvent()方法中获取触摸点的坐标:
public boolean onTouchEvent(MotionEvent event) {
//获取到手指处的横坐标和纵坐标
int X = 0, newX = 0;
int Y = 0, newY = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("hahahhaha", "屏幕位置被按下");
X = (int) event.getX();
Y = (int) event.getY();
break;
接下来我们在ACTION_MOVE事件中计算偏移量,再调用layout()方法重新放置这个自定义View的位置就好了:
public boolean onTouchEvent(MotionEvent event) {
//获取到手指处的横坐标和纵坐标
int X = 0, newX = 0;
int Y = 0, newY = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("hahahhaha", "屏幕位置被按下");
X = (int) event.getX();
Y = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
Log.d("hahahhaha", "屏幕位置在移動");
newX = (int) event.getX();
newY = (int) event.getY();
int offsetX = newX - X;
int offsetY = newY - Y;
Log.d("hahaha", "offsetX=" + offsetX + ",offsetY=" + offsetY);
//1.调用layout方法来重新放置它的位置
layout(getLeft()+offsetX, getTop()+offsetY,
getRight()+offsetX , getBottom()+offsetY);
当我们每次移动时都会调用layout()方法来对自己重新布局,从而达到移动View的效果。
2.offsetLeftAndRight()与与offsetTopAndBottom()
这两种方法和layout()方法效果方法差不多,使用也差不多,我们将ACTION_MOVE中的代码替换成如下代码:
case MotionEvent.ACTION_MOVE:
//计算移动的距离
int offsetX = x - lastX;
int offsetY = y - lastY;
//对left和right进行偏移
offsetLeftAndRight(offsetX);
//对top和bottom进行偏移
offsetTopAndBottom(offsetY);
break;
评论0
最新资源