紧接上篇文章(Android实现Scroll(滑动)的方法(—))继续说一下实现滑动的方法。
⑥ViewDragHelper:支持着DrawerLayout和SlidingPaneLayout两个布局来实现侧边栏滑动效果。
案例:QQ滑动侧边栏(分析):
a.初始化ViewDragHelper:其通常定义在一个ViewGroup的内部,并通过其静态工厂方法进行初始化。
图 1b.拦截事件:将事件传递给ViewDragHelper进行处理。
图 2c.处理computeScroll():ViewDragHelper内部也是通过Scroller实现平滑移动。
图 3d.处理回调Callback,在创建Callback时,IDE会重写tryCaptureView()方法,通过该方法,可以指定参数parentView中子View被移动。
图 4e.重写clampViewPositionVertical()、clampViewPositionHorizontal()方法。方法参数:int top(表示在垂直方向上child移动的距离),int dy(表示比较前一次的增量)
图 5f.实现当手机离开屏幕后实现的操作:重写ViewDragHelper.Callback中系统提供的onViewReleased()方法。
图 6g.自定义ViewGroup,并在onFinishInflate()方法中按顺序将子View分别定义成MenuView和MainView,并在onSizeChanged()方法中获取View的宽度。
图7
网友评论