0

我制作了我的第一个小游戏。我使用 Android 提供的旋转动画。我在每个类文件中都写了这段代码:

this.overridePendingTransition(R.anim.rotate, R.anim.translate);

这是最好的方法还是我可以在某个地方为我的整个应用程序设置它?而且,如果我使用这个动画,新的 Activity 会很好地“旋转”到屏幕上,但背景会变黑。(我想是因为翻译动画?!)如何设置自己的背景?

翻译动画的代码是:

<?xml version="1.0" encoding="utf-8"?>
<translate>

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="200%"
    android:toXDelta="0%"
    android:fromYDelta="200%"
    android:toYDelta="0%"
    android:duration="1000"
    android:zAdjustment="top" />

和旋转动画:

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="90"
    android:toDegrees="0"
    android:pivotX="-5%"
    android:pivotY="5%p"
    android:duration="1000" />
4

1 回答 1

0

抽象

你目前的方式:

overridePendingTransition(R.anim.rotate, R.anim.translate);

设置它的最佳方法是通过抽象Activity组合,这更多地与编程实践有关,而不是专门针对 Android。

短处是:

public abstract BaseActivity extends FragmentActivity{
  @Override
  protected onCreate(Bundle savedInstance){
    overridePendingTransition(R.anim.rotate, R.anim.translate);
  }
}

然后你的混凝土Activity扩展了这个。

public class MyActivity extends BaseActivity{}

动画

因此,当前设置意味着您的 NewActivity将 Rotate in,而您的旧活动(应该)翻译出来

看到您将旧活动翻译出(而不是)动画有点错误。用于翻译的正确翻译动画将类似于:

<translate
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:fromXDelta="0%"
  android:toXDelta="100%"
  android:fromYDelta="0%"
  android:toYDelta="0%"
  android:duration="1000" />

这会将退出的活动从中心屏幕转换为向右滑动。

也忽略zAdjustment,默认情况下,您的新活动从旧活动开始,您不想将旧活动留在上面。

于 2013-02-13T01:11:58.590 回答