View位置总结

参考文章: 1、Android View移动的六种方法小结

2、Android应用坐标系统全面详解

3、Android动画精讲一:从setTranslationX谈属性动画和view动画的区别

总结:

1、LayoutParams
通过view的LayoutParams设置margin最终影响了view的位置,这个同时会改变view的getLeft/getRight
等变量。注意,使用view动画+updateLayoutParams策略时,务必注意不要使用transAnim.setFillAfter(true),因为在view动画+updateLayoutParams+transAnim.setFillAfter(true)这种策略下,view最终的绘制位置等于将view先updateLayoutParams后在新的位置基础上,再进行动画移位。。

2、setTranslationX
 setTranslationX改变了view的位置,但没有改变view的LayoutParams里的margin属性,也没 有改变view的getLeft/getRight; 它改变的是android:translationX 属性,也即这个参数级别是 和margin平行的。

3、View.layout(int l, int t, int r, int b)
该方法只有ViewGroup类继承过,其他类都没有继承。该方法会调用View.onLayout方法,onLayout一般是ViewGroup的子类去实现,子类实现中会调用每个child.layout方法进行布局,也就是说最终布局都是在View.layout方法中,ViewGroup的子类中也就是获取child的各种参数,计算好再传回child自己。

4、View.offsetLeftAndRight()和View.offsetTopAndBottom()
移动的是整个View,getLeft()或者getTop会变的,自定义View很有用,但是不会改变LayoutParams.xxxMargin。LayoutParams.xxxMargin在父布局onLayout中调用的,得到child的left,top,right,bottom等值,然后调用child.layout方法。

5、scrollTo() scrollBy()

6、Scroller

转载于:https://my.oschina.net/bruces/blog/708870

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值