为什么我的旋转动画在应用于Activity转换时都很难?

时间:2011-01-25 20:19:31

标签: android animation android-activity

以下动画应该做什么?

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotX="50%"
    android:pivotY="50%"
    android:interpolator="@android:anim/linear_interpolator"
    android:duration="1000" />

够容易。它应代表围绕中心的顺时针旋转。只需旋转一下,然后停下来。正确?

当我将它应用于View时,它确实......

但是,当我为活动转换设置动画时,会发生完全不同的事情。活动开始逆时针旋转,但同时它会飞离屏幕的右上角。然后它返回,仍然逆时针旋转,现在倒置,然后飞离屏幕的左下角。最后,它回来并直立结束旋转。

无论我为pivotXpivotY指定什么,行为始终是相同的。它们似乎完全被忽略了。无论哪种方式,事情肯定不会围绕任何固定的枢轴旋转!

这是什么废话?这是一个错误吗?

为了完整性,我将此动画保存为res/anim/spin.xml,并按如下方式调用它:

startActivity(intent);
overridePendingTransition(R.anim.spin, R.anim.spin);

(对于in和out使用相同的动画没有任何意义,但这是最小的例子。)


更新:演示应用程序以重现此问题

我已经整理了一个演示问题的最小Android项目。主要活动如下:

package com.example.animtest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;

public class MainActivity extends Activity {

    private View rootView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        rootView = getLayoutInflater().inflate(R.layout.main, null);
        setContentView(rootView);
    }

    public void animateRootView(View view) {
        Animation spin = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.spin);
        rootView.setAnimation(spin);
        spin.start();
    }

    public void animateActivity(View view) {
        Intent intent = new Intent();
        intent.setClassName("com.example.animtest", "com.example.animtest.MainActivity");
        startActivity(intent);
        overridePendingTransition(R.anim.spin, R.anim.spin);
    }

}

以下是ZIP file with the project sourcerunnable APK file。在Nexus One上测试,Android 2.2.2。

2 个答案:

答案 0 :(得分:1)

已知问题..直到2.3.4没有做任何事:( http://code.google.com/p/android/issues/detail?id=10402

答案 1 :(得分:0)

听起来我们不太支持活动上的旋转动画:)