【问题标题】:Android Animation Background (Rotate, Translate)Android 动画背景(旋转、翻译)
【发布时间】:2023-03-23 20:02:01
【问题描述】:

我制作了我的第一个小游戏。我使用 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" />

【问题讨论】:

    标签: android background rotation translate-animation


    【解决方案1】:

    抽象

    你现在拥有它的方式:

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

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

    短:

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

    然后你的具体Activity 扩展了这个。

    public class MyActivity extends BaseActivity{}
    

    动画

    因此,当前设置意味着您的新 Activity 将旋转in,而您的旧活动(应该)转换out

    您将旧活动翻译出(而不是)动画有点错误。 一个正确的翻译动画应该是这样的:

    <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,默认情况下,您的新活动从旧活动开始,您不想将旧活动留在上面。

    【讨论】: