以下动画应该做什么?
<?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时,它确实......
但是,当我为活动转换设置动画时,会发生完全不同的事情。活动开始逆时针旋转,但同时它会飞离屏幕的右上角。然后它返回,仍然逆时针旋转,现在倒置,然后飞离屏幕的左下角。最后,它回来并直立结束旋转。
无论我为pivotX
和pivotY
指定什么,行为始终是相同的。它们似乎完全被忽略了。无论哪种方式,事情肯定不会围绕任何固定的枢轴旋转!
这是什么废话?这是一个错误吗?
为了完整性,我将此动画保存为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 source和runnable APK file。在Nexus One上测试,Android 2.2.2。
答案 0 :(得分:1)
已知问题..直到2.3.4没有做任何事:( http://code.google.com/p/android/issues/detail?id=10402
答案 1 :(得分:0)
听起来我们不太支持活动上的旋转动画:)