如何执行我的overridePendingTransition?

时间:2018-09-09 17:05:01

标签: android android-animation

注意:本主题的末尾列出了类似的问题,您将看到我已经考虑了他们的答案和评论... 但是没有任何效果。


我正在为我的Android应用程序开发初始屏幕。此初始屏幕在主要活动中,并且逐渐消失。淡入淡出后,主要活动将开始另一个活动。

问题

问题在于主要活动在不显示褪色效果的情况下开始了另一个活动。

配置

仿真器

模拟器使用如下所示的AVD:API级别为27,Android为8.1 Oreo。

build.gradle(模块:应用)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.."
        minSdkVersion 27
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        renderscriptTargetApi 27
        renderscriptSupportModeEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

我为完成这种褪色而写的东西

我...:

  1. 创建了 MainActivity.java 并将startActivityoverridePendingTransition调用放入

  2. AndroidManifest.xml 中创建了两个主题(一个用于主要活动,另一个用于另一个活动)。我在应用程序的主题中将windowActivityTransitions设置为true

  3. anim / fade_out_home_activity.xml 中为动画创建样式(因此在主活动中)。

  4. 创建了其他活动(包括新的.java,新的.xml和清单的更新)。

我做了什么,详细

MainActivity.java

公共类MainActivity扩展了AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    startActivity(new Intent(this, HomeActivity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
    finish();
    overridePendingTransition(R.anim.fade_out_home_activity, R.anim.fade_out_home_activity);
    setContentView(R.layout.activity_main);
}

}

anim / fade_out_home_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:interpolator/decelerate_quad"
    android:fromAlpha="1.0" android:toAlpha="0.0"
    android:duration="@android:integer/config_longAnimTime"/>

(可能对帮助无效)styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="android:windowActivityTransitions">true</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

我的问题

您知道为什么不显示动画的原因(请注意,动画是否已执行?)

类似的问题

我已经创建了几个有关如何实现启动画面动画的主题。请注意,我不想使用setEnterTransition等(Why the XML specified transition isn't executed? (or why its specified duration isn't taken account?),原因是我(我!)在OP的第一个评论How to fade out an Activity's UI, and fade in another Activity's UI?中)。

我从这里得到了一些答案:overridePendingTransition not working。上面的代码中考虑了这些。

我还根据此处的答案中的建议添加了ActivityOptions.makeSceneTransitionAnimation(this).toBundle()Android: Activities animations not working

什么都没用,我太疯狂了,我浪费了时间在两个活动之间做一个简单的动画!刚开始时,我还想执行另一个动画,但是当我放弃这个主意时(有人告诉我这是不可能的,您可以在上面的链接中找到答案或评论)。

1 个答案:

答案 0 :(得分:1)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);


new CountDownTimer(5000, 1000) {

    public void onTick(long millisUntilFinished) {

    }
    public void onFinish() {
        startActivity(new Intent(MainActivity.this, HomeActivity.class), 
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }

}.start();

}