android之滑动机制实现方式

自定义是进阶路上的一道炒鸡大门槛,要真正学好自定义View,还得学会View的滑动机制,事件分发机制,这些很多时候自定义View的时候都得用上,如果没用上,那只是最简单的自定义方式了。这篇文章单单说下滑动机制,事件分发机制和自定义VIew的实现在之前的文章写过了,如果定制复杂的自定义view,把三者结合一下就行了。

在之前的文章android之自定义View和ViewGroup(五)(代码篇,实现类似竖着的ViewPager引导页,竖向引导页)中用到过View的滑动事件,用的View的滑动辅助类Scroller实现的。如果不懂的看看接下来这篇文章讲的应该就能懂了。

在android中,比如实现一个最简单的滑动——view跟着手指的移动进行滑动。

在书写代码之前,需要了解下坐标系问题。在Android中,有两种坐标系,一种是视图坐标系,像平常用的什么getX,getY获取的坐标就是针对视图坐标系来说的,即相对坐标(相对于控件左上角所定义的坐标);另一种是Android坐标系,getRawX和getRawY获取的坐标就是针对Android坐标系了,即绝对坐标(相对于屏幕左上角所定义的坐标)。其实很好理解,一个是以控件的左上角为参考系,一个是以屏幕的左上角为参考系,如果要获取view在屏幕中的位置,那么不用想肯定得需要用绝对的Android坐标系了(getLocationOnScreen()方法获取View的左上角在Android坐标系中的位置)。

你可千万不要问我getLeft和getRight之类的是相对于什么坐标系的,你要是真问了咋办?

很简单,你再回小学去学学语文吧,阿西吧。相对于坐标系,什么叫坐标系?什么叫获取坐标?你x,y是坐标,难道left,right也是坐标吗?既然不是坐标那就跟什么坐标系没关系了,坐标系是用来获取坐标的时候才需要用。

那么现在我们实现下开始说的最简单的滑动事件,首先我们需要让View跟着我们手指滑动,那么我们肯定得监听View的touch事件,注意不是ViewGroup的touch事件,因为我们如果监听的是它的父布局ViewGroup的touch事件,那么我们根本没法判定何时开始滑动,因为我们滑动前提必须是手指放到View上面开始的,所以我们必须让down事件在View上。

首先我们继承View,然后重写它的onTouchEvent方法获取touch的事件中的坐标:

@Override
    public boolean onTouchEvent(MotionEvent event) {
        int x = (int) event.getX();  //获取x坐标
        int y = (int) event.getY();  //获取y坐标
        switch (event.getAction()) {
            case MotionEven
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值