Scroller用法

Scroller用法

手写笔记:





另外需要补充一些相关知识:
    
1.既然viewgroup内部实现了滑动的方法scrollTo()/scrollBy(),为什么要用还scroller呢?
    因为:
* 为了让View或者ViewGroup的内容发生移动,我们常用scrollTo()和scrollBy()方法.
* 但这两个方法执行的速度都很快,瞬间完成了移动感觉比较生硬.
* 为了使View或者ViewGroup的内容发生移动时比较平滑或者有其他的移动渐变效果
* 而采用Scroller可以分割移动过程,让过程有一段时间,从而能感受到滑动的效果.
* 在具体实现时,我们继承并重写View或者ViewGroup时可生成一个Scroller由它来具体
* 掌控移动过程和结合插值器Interpolator调用scrollTo()和scrollBy()方法. 
    

2.为什么要postinvalidate()或者invalidate()?
    因为这两个方法都是可以让整个view体系从最顶端开始自上而下重绘整个view,而当绘制到当前的viewgroup时,便去调用viewgroup的computeScroll(),从而达到滑动的过程。

3.scroll到底是一个什么样的动作?
    回答这个问题,首先要明白一个原理:
    Android View视图是没有边界的,Canvas是没有边界的,只不过我们通过绘制特定的View时对Canvas对象进行了一定的操作,例如 : translate(平移)、clipRect(剪切)等,以便达到我们的对该Canvas对象绘制的要求 ,我们可以将这种无边界的视图称为“视图坐标”-----它不受物理屏幕限制。通常我们所理解的一个Layout布局文件只是该视图的显示区域,超过了这个显示区域将不能显示到父视图的区域中 ,对应的,我们可以将这种有边界的视图称为“布局坐标”------ 父视图给子视图分配的布局(layout)大小。而且, 一个视图的在屏幕的起始坐标位于视图坐标起始处。
 

    那么下面的问题就是:如何将我们的视图的任意坐标能显示到该视图的中心坐标上呢? 由于该布局位置是只能显示特定的一块视图内容 ,因此我们需要通过scrollTo()或者scrollBy()方法将我们期望的视图“滚动”至布局坐标上。

   所以,我们得到的结论是:即使没用到scrollView,我们也能实现视图的滑动。而事实上我们在用linearlayout时,用scrollTo()方法便可实现视图的移动,而加入scroller后,便实现了滑动的效果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值