Android中滚动的实现

1.基础类View已经实现了大部分的滚动需要的基本支持

1)scrollBy,scrollTo

将View滚动到指定位置,其实就是通过记录mScrollX和mScrollY并触发重新绘制来完成

2)awakenScrollBars

触发滚动条的绘制

3)setVerticalScrollbarEnabled,setHorizontalScrollbarEnabled,setScrollbarFadingEnabled,

setHorizontalFadingEdgeEnabled,setVerticalFadingEdgeEnabled,setScrollbarStyle来控制

Scroll

4)getScrollX,getScrollY获取当前的offset

5)定义computeScroll给ViewGroup::drawChild调用,派生类如果要实现滚动效果,重载这个接口

6)和滚动比较有关的两个参数,屏幕的宽和高,getHeight(),getWidth()

7)onScrollChanged通知滚动result,派生类可以重载,对滚动result作出响应


2.通常引进Scroller或者类似的机制来实现平滑的滚动效果(比如滑屏操作)

1)通过Scroller::startScroll或者Scroller::fling初始化起始坐标,duration等

2)在类的computeScroll中调用Scroller::computeScrollOffset来计算即时的位置mCurrX,mCurrY,将这两个

值赋给mScrollX,mScrollY。因为是自己修改mScrollX和mScrollY而不是通过View的scrollTo,scrollBy,所以

自动调用onScrollChanged

3)调用invalidate或者postInvalidate来触发刷屏操作,重新绘制的时候因为mScrollX和mScrollY的改变,实现

了滑动的效果


3.程序设计上一般结合onInteceptTouchEvent和onTouchEvent

如果ActionDown后再来ActionMove,且两者坐标出现移动,则让程序进入Scrolling状态,在ActionMove的时候调用scrollTo或者scrollBy

如果ActionDown后来ActionUp,且速度超过指定速度,则进行fling操作

更多相关文章

  1. android Uri利用及解析(文件操作)以及与路径的相互转换
  2. Android 选项卡效果
  3. Android 控件布局实现卡片效果,阴影效果
  4. 去掉ScrollVIew拉到尽头时再拉的阴影效果
  5. android管理联系人操作

随机推荐

  1. 判断android网络连接
  2. [Android Studio]使用AS开发Android
  3. android studio 模拟器出现中文乱码解决
  4. Android遇到 android studio "Internal H
  5. Android 2.2 Platform
  6. 在编译Android时,开机不锁屏
  7. android 短信是否发送成功
  8. Android   收集索引贴
  9. Android电话秀(二)
  10. Android计算缓存大小、清空缓存