美文网首页Android知识
坑人的视图动画

坑人的视图动画

作者: 墨革 | 来源:发表于2016-10-28 15:28 被阅读74次

    以下是一个用视图动画实现先平移后缩放的动画的xml代码

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:fillAfter="true">
        <translate
            android:duration="1500"
            android:fromXDelta="0"
            android:fromYDelta="0"
            android:toXDelta="300"
            android:toYDelta="300" />
    
        <scale
            android:duration="1500"
            android:startOffset="1500"
            android:fromXScale="1"
            android:fromYScale="1"
            android:toXScale="2"
            android:toYScale="2"
            android:pivotY="50%"
            android:pivotX="50%"/>
      </set>
    

    期望的执行结果是先平移后缩放。可是发现在缩放的时候还是会发生移动,这是怎么回事呢?实验了很多次,都是这样。然后我把第二个动画改成了旋转动画,发现旋转的中心点依然在执行该动画的View的最原始的位置。恍然大悟?对,视图动画并没有真正改变View的真实位置(牢记)。

    因为View真实的位置并没有改变,所以虽然设置了android:pivotY="50%"android:pivotX="50%",但是此时的缩放中心并不是移动之后所看到的View的中心,而是在视图原来位置的中心。也就是说,此时的缩放中心在你所看到的View的外面。

    那么对于缩放中心不处于View上面的时候,它是怎么缩放的呢?

    经过我的实验发现:假如该View离缩放中心的距离是s,缩放倍数为n,那么它缩放之后,它距离缩放中心的距离将变成s*n。

    解决办法:目前我还没有想到直接用视图动画的解决办法,只能用属性动画了。

    相关文章

      网友评论

        本文标题:坑人的视图动画

        本文链接:https://www.haomeiwen.com/subject/yoleuttx.html