一起Talk Android吧(第四百五十五回:给View添加手势事件一)

各位看官们大家好,上一回中咱们说的例子是"计算View的滑动距离",这一回中说的例子是"给View添加手势事件"。闲话休提,言归正转,让我们一起Talk Android吧!

概念介绍

手势事件就是按下,弹起这些事件以外的事件,主要包含长按、滑动,双击等事件.在Android中使用GestureDetector类表示手势事件。该类提供了不同的回调方法来响应手势事件,接下来我们通过文字结合代码的方式来介绍它的使用方法。

使用方法

  • 1.创建GestureDetector类型的对象,同时实现OnGestureListener接口;
  • 2.重写OnGestureListener接口中的回调方法,通过这些回调方法可以监听长按、滑动等手势事件。
  • 3.在View中注册手势事件,主要用来监听手势事件;

示例代码

//在View中注册手势事件,主要用来监听手势事件;
public boolean onTouchEvent(MotionEvent event) {
    mGestureDetector.onTouchEvent(event);
}

//创建GestureDetector对象并且实现OnGestureListener接口
mGestureDetector = new GestureDetector(this,new GestureDetector.OnGestureListener() {
    @Override
    public boolean onDown(MotionEvent event) {
        Log.d(TAG, "onDown: ");
        return false;
    }

    @Override
    public void onShowPress(MotionEvent event) {
        Log.d(TAG, "onShowPress: ");

    }

    @Override
    public boolean onSingleTapUp(MotionEvent event) {
        Log.d(TAG, "onSingleTapUp: ");
        return false;
    }

    @Override
    public boolean onScroll(MotionEvent event, MotionEvent event1, float v, float v1) {
        Log.d(TAG, "onScroll: ");
        return false;
    }

    @Override
    public void onLongPress(MotionEvent event) {
        Log.d(TAG, "onLongPress: ");
    }

    @Override
    public boolean onFling(MotionEvent event, MotionEvent event1, float v, float v1) {
        Log.d(TAG, "onFling: ");
        return false;
    }
});

在上面的程序中常用的是onScrollonLongPress方法,分别用来监听滑动和长按这两种手势事件。其它回调方法的作用可以参考官方文档,这里就不详细介绍了。

在上面的代码中,我们监听到手势事件后只是打印log,大家可以依据项目的需要添加相应的内容,然后return true表示处理了相应的事件。

此外,关于onScroll方法中的参数,我们分享一些使用经验,第一个参数表示开始滑动时的事件,第二个参数是当前正在滑动时的事件,第三个和第四个参数表示当前滑动与上一次滑动之间在x和y这两个方向上的差值(可以是负值)。因为只要有滑动就会回调此方法,所以这四个参数的值变化很快,我经常使用第三个和第四个参数表示滑动距离,当滑动距离超过某个阀值时执行某项操作。我在这里就不演示了,大家可以自己动手试试。

看官们,关于"给View添加手势事件"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值