Android - 自定义ScrollLayout

View
  scrollTo:相对于初始位置
  scrollBy:相对于当前位置

  1.滚动对象是View内部的内容
  2.X轴 负值:向右,正值:向左  (左正右负)
   Y轴 负值:向下,正值:向上
  3.滚动效果为跳跃式,没有平滑滚动效果


Scroller使用步骤:
  1.创建Scroller实例
  2.调用Scroller.startScoll()方法,传入起始位置与滑动偏移量
  3.调用View.invalidate()
  4.Scroller不负责滑动View, 只负责计算滑动值(数学引擎), View的invalidate()中将回调onComputeScroll(), 可以在该方法中利用Scroller执行滚动逻辑

  

  代码说明:

  1、ScrollLayout 重载onInterceptTouchEvent,拦截ACTION_MOVE事件
  2、ScrollLayout 需要消费ACTION_DOWN事件,因为子View可能不会消费ACTION_DOWN(如:TextView并且没有设置clickable为true)

  3、startScroll()中关于滑动偏移量的计算公式为:targetIndex * getWidth() - getScrollX() ,可分为如下四种情况分析:

      左滑:满足条件,继续左滑进入下一个,offset= targetX-curX

           不满足条件,右滑进行还原,offset=targetX-curX

      右滑:同上

        

  结果演示:

  

另附:

  

参考文章:

  android之View坐标系

  Android Scroller完全解析,关于Scroller你所需知道的一切

 

posted @   chenyizh  阅读(287)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
点击右上角即可分享
微信分享提示