android - 为什么我的旋转动画在应用到 Activity 过渡时都不稳定?

标签 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 时,它确实如此。

但是,当我为 Activity 过渡制作动画时,会发生一些完全不同的事情。 Activity 开始逆时针旋转,但同时它飞离了屏幕的右上角。然后它又回来了,仍然逆时针旋转,现在是颠倒的,飞离了屏幕的左下角。最后,它返回并结束直立旋转。

无论我为 pivotXpivotY 指定什么,行为始终相同。他们似乎完全被忽略了。不管怎样,这个东西肯定根本没有绕着任何固定的枢轴旋转!

这是什么鬼话?是错误吗?

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

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

(对进出都使用相同的动画是没有意义的,但这是最小的示例。)


更新:重现此问题的演示应用

我整理了一个最小的 Android 项目来演示该问题。主要 Activity 如下所示:

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.3.4 什么都没做 :( http://code.google.com/p/android/issues/detail?id=10402

关于android - 为什么我的旋转动画在应用到 Activity 过渡时都不稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798380/

相关文章:

java - Android fragment 与回收器 View 通信

java - 高分未保存在 Libgdx 中

javascript - 单击触发器时不保留完整动画

android - 通过 xml Button 内部的方法进行 Activity 和 Fragment 通信

android - 使按钮在 Android SDK 中保持按下状态

java - 无法从 SD 卡访问数据库文件

javascript - 在值范围内进行动画处理

python - Moviepy 缩放效果需要调整

Android Bundle getExtras 与日历对象

android - 从preferences.xml启动Activity,在onActivityResult中获取结果