自定义view跟手移动android,Android开发艺术探索笔记-自定义View-跟手滑动

实现一个跟手滑动的效果,这一定是个自定义View,拖动它可以让它在整个屏幕上随意滑动。这个View实现起来很简单,我们只要重写它的onTouchEvent方法并处理ACTION_MOVE事件,根据两次滑动之间的距离就可以实现它的滑动了。为了实现全屏滑动,此采用动画的方式来实现。核心代码如下所示。

public boolean onTouchEvent(MotionEvent event) {

int x = (int) event.getRawX();

int y = (int) event.getRawY();

switch (event.getAction()){

case MotionEvent.ACTION_DOWN:

break;

case MotionEvent.ACTION_MOVE:

int deltaX = x - mLastX;

int deltaY = y - mLastY;

int translationX = (int) (ViewHelper.getTranslationX(this) + deltaX);

int translationY = (int) (ViewHelper.getTranslationY(this) + deltaY);

ViewHelper.setTranslationX(this,translationX);

ViewHelper.setTranslationY(this,translationY);

break;

case MotionEvent.ACTION_UP:

break;

default:

break;

}

mLastX = x;

mLastY = y;

return true;

}

通过上述代码可以看出,这一全屏滑动的效果实现起来相当简单。首先我们通过getRawX和getRawY方法来获取手指当前的坐标,注意不能用getX和getY方法,因为这个是要全屏滑动的,所以需要获取当前点击事件再屏幕中的坐标而不是相对于位移,View本身的坐标;其次,我们要得到两次滑动之间的位移,

有了这个位移就可以移动当前的View,移动方法采用的是动画兼容库 nineoldandroids 中的 ViewHelper 类所提供的 setTranslationX 和setTranslationY 方法。实际上,ViewHelper 类提供了一系列 get/set方法,因为 View 的 setTrainslationX 和 setTranslationY 只能在 Android3.0 及以上版本才能使用,但是ViewHelper所提供的方法是没有版本要求的,与此类似的还有 setX、setScaleX、setAlpha等方法。

效果如下。

b3dee9beb636

QQ20170320-160636.gif

注:以上内容摘自《Android 开发艺术探索》 —— 任玉刚

此篇仅作笔记使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值