scrollTo scrollBy 是对view内部的内容进行移动 view本身不会移动 该方法不仅可以运用于viewGroup还可以运用于view
view的bg不会变化 只会引起view的content变化
下面三个将会将view整体移动 bg移动
TranstationX TranstationY
LayoutParamas
Scroller
1:layoutparams getLeft getX
layoutparams和其他两个参数没有关系。
改变位置可以通过 setTransationX setLeft setLayoutParams实现
getLeft和getX两者有关系
getX=getLeft+getTranstationX
left的变化会引起getX的变化 但是transtationX变化不会引起getLeft的变化
LayoutParams的变化不会引起其他两个值的变化
Scroller方法详解:
使用scroller基本步骤
1:创建scroller对象
scroller = new Scroller(context,new LinearInterpolator());
2:调用scroller初始化参数方法 并调用invalidate()
scroller.startScroll(getScrollX(), getScrollY(), distance, 0, 5000);
invalidate(); //在draw里面 系统会调用computeScroll方法3:重写view的 computeScroll()方法
//调用scroller的computeScrollOffset方法 其中执行一系列计算 计算滚动距离 就是下面取得值 是否结束滚动
if(scroller.computeScrollOffset()){ // 获取scroller计算得到的CurrentX CurrentY 进行移动 scrollTo(scroller.getCurrX(),scroller.getCurrY()); // 在此执行刷新ui的方法 invalidate(); }
很重要的一句话 没有真正意义的匀速平滑滚动 本质上都是分割许多个小段 每个小段移动
在视觉上给我们感觉是平滑滚动 就是利用人眼分辨极限 一秒30张图片播放