View滑动动画的选择及其left, marginLeft, translationX参数的总结

本文探讨了在Android中实现View滑动动画时,left、marginLeft和translationX等参数的关系及影响。通过实验得出,这些参数之间相互独立。同时,文章提到了MotionEvent的getX()与getY()与View的getX()、getY()的区别,前者表示触摸点相对于监听视图的位置,后者表示视图相对于父布局的位置。总结了包括改变布局参数、使用Scroller、View动画和属性动画等多种滑动实现方式,并建议在需要精确滑动控制时采用修改布局参数的方法。
摘要由CSDN通过智能技术生成

最近由于项目需要,做一个比较复杂的3D动画,核心就是根据手指的滑动来翻转3D效果。因此,又回顾了一下view滑动效果,而且根据不同的方式实现了一下,发现其中很多参数容易搞混,比如改变view的left,marginLeft,translationX中的任意一个值,对另外2个值及其getX是否有影响,因此,做了一下实验,发现挺有意思,结果如下:


这里写图片描述

注:第三行,是设置了android:layout_centerInParent=”true”的结果,因此图片也滑动不了了。如果去掉此设置,getLeft是随着leftMargin而改变的!

从上面的数据来看,这几个view的参数之间的值相互之间不影响。同理right, marginRight, translationX和top, marginTop, translationY以及bottom, marginBottom, translationY都能得到相同的答案。

另外一点很重要,就是无论如何变化,始终有如下关系:
view.getX() = view.getLeft() + view.getTranslationX();
这个其实根据View.getX()的代码也能证明:

/**
     * The visual x position of this view, in pixels. This is equivalent to the
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值