pivotX / Y如何在旋转动画集中工作

时间:2017-03-01 21:05:40

标签: android android-layout rotation android-animation

我想了解旋转动画是如何工作的 通过以下内容,我按如下方式旋转视图:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="8000"
>

    <rotate android:fromDegrees="0"
            android:toDegrees="30"
            android:pivotX="100%"
            android:pivotY="100%"
            />

    <rotate
            android:toDegrees="100"
            android:pivotX="100%"
            android:pivotY="30%"
    />
</set>  

结果:
enter image description here

现在箭头在哪里我试图再次使用它作为中心旋转。
所以我修改了我的动画集如下:

<set xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="8000">
     <rotate android:fromDegrees="0"
                android:toDegrees="30"
                android:pivotX="100%"
                android:pivotY="100%"
                />  

        <rotate
                android:toDegrees="100"
                android:pivotX="100%"
                android:pivotY="30%"
        />  

     <rotate android:pivotY="-30%"
           android:pivotX="40%"
           android:toDegrees="100"/>    
</set>    

即。我添加了

<rotate android:pivotY="-30%"
               android:pivotX="40%"
               android:toDegrees="100"/>  

这对我来说似乎是正确的,因为在屏幕上看,旋转点比y的最左边值小约30%,而x比最左边的x值大约多40%。
但是当动画运行时它没有按预期工作。说实话,我不知道实际旋转点是什么,整个视图偏向左边 结果:

enter image description here

我在这里误解了什么?

1 个答案:

答案 0 :(得分:3)

旋转是旋转的点(就像将照片放在照片中一样)。如果您的“从”和“到”枢轴不相同,那么您不仅仅是围绕设定点旋转,而是旋转一点,然后更改引脚位置并为每一步旋转一点(导致歪斜) )。

万一你不知道:Android coordinates从左上角开始而不是从左下角开始。

我认为那套你想要的只是

    $('.social_properties_form').on('submit', function(e) {
            e.preventDefault();
            e.stopImmediatePropagation();

            imgOptimize();

                $.ajax({
                  type: 'POST',
                  url: '',
                  data: new FormData(this),
                  processData: false,
                  contentType: false,
                  success: function(data) {
                 window.location = "/profiles/articles.php";
                  }
                });
                }
        })

function imgOptimize(){
    $(".textContents img").each(function(){
        var original = $(this).attr('src');
        $(this).attr('src', '/media/assets/loading-background.jpg');

        $(this).attr('data-src', original);

        var fileName = original.split('/').pop();

        $(this).attr('data-mobile-src', '/stories/media/images/mobile/' + fileName);
    });
}

它将围绕引脚旋转130度[100%,30%](x是最大值,即屏幕的右边缘,y是屏幕下方的30%)并且在同一时间时间向右滑动直到它的100%(视图宽度)到它的起始位置右侧