Android群英传学习笔记——Android Scroll 分析

1.滑动效果的产生 

首先我们需要了解的是在Android中,将屏幕左上角作为坐标原点,已这个点根据X坐标轴往右为正方向,根据Y轴坐标往下为正方向。在ViewGroup中,子View的坐标原点是父View的左上角。其次,我们需要知晓Android屏幕的触碰事件,这其中我们常用的MotionEvent action的有

//单点触摸按下动作
ACTION_DOWN
//单点触摸离开动作
ACTION_UP
//触摸点移动动作
ACTION_MOVE
//触摸动作超出边界
ACTION_OUTSIDE
//多点触摸按下动作
ACTION_POINTER_DOW
//多点离开动作
ACTION_POINTER_UP
取消动作在与,当一个ViewGroup,两个View发生切换,原先的View被销毁,就会触发取消动作,在这些动作后,我们还有获得坐标值的方法:

  • View提供的获取坐标方法

getTop():获取到的是View自身的顶边到其父布局顶边的距离

getLeft():获取到的是View自身的左边到其父布局左边的距离

getRight():获取到的是View自身的右边到其父布局右边的距离

getBottom():获取到的是View自身的底边到其父布局顶边的距离

  • MotionEvent提供的方法

getX():获取点击事件距离控件左边的距离

getY():获取点击事件距离控件顶边的距离

getRawX():获取点击事件距离整个屏幕左边的距离

getRawY():获取点击事件距离整个屏幕顶边的距离

 

2.实现滑动的方法

  1. 使用onLayout()方法进行重绘
  2. 使用offsetLeftAndRight()与offsetTopAndBotton()方法来重绘
  3. 使用setLayoutParams进行便宜
  4. 使用scrollTo和scrollBy
  5. 使用Scroller类,重写computeScroll方法,然后使用startScroll()方法
  • 使用ViewDragHelper进行滑动,具体步骤为初始化ViewDragHelper,重写onInterceptTouchEvent()拦截方法,使用onTouchEvent()来传递触摸事件,同时我们需要重写computeScroll()方法,外加实现ViewDragHelper的Callback实现,在Callback中,我们需要实现的有tryCaptureView(),这个方法可以让我们指定我们所需要动的view,最后我们要写的是相关的clampViewPositionHorizontal()和clampViewPositionVerticl(),分别是水平和垂直方向的移动。如果我们需要对View拖动进行优化,我们也可以重写onViewRelased()方法,此方法是是拖动结束后调用。当然ViewDragHelper还有大量的监听事件,下面列举一些事件
  • onViewCaptured 这个事件在用户触摸到View后回调
  • onViewDragStateChanged 这个事件在拖曳状态改变时回调,比如idle, draggging等状态
  • onViewPositionChanged() 这个事件在位置改变时回调,常用于滑动时更改scale进行缩放等效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值