如何执行我的 overridePendingTransition?

How to execute my overridePendingTransition?

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


我正在为我的 Android 应用程序开发启动画面。此初始屏幕位于主 activity 中,然后淡出。当它完成衰落时,主要 activity 开始另一个 activity.

问题

问题是主activity启动另一个没有显示淡出效果

配置

模拟器

模拟器使用这样配置的 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 中创建了两个主题(一个用于主 activity,另一个用于另一个)。我在应用程序的主题中将 windowActivityTransitions 设置为 true

  3. anim/fade_out_home_activity.xml 中为动画创建了样式(因此主要是 activity)。

  4. 创建了另一个 activity(包括新的 .java、新的 .xml 和清单的更新)。

我做了什么,详解

MainActivity.java

public class 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?) , the reason is in my (my!) first comment in OP here )。

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

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

没有任何效果,我快要疯了,浪费时间在两个活动之间做一个简单的动画!一开始,我也想在主 activity 启动时执行另一个动画,但我放弃了这个想法(有人告诉我这是不可能的 - 你可以在上面的链接中检索这个答案或评论)。

@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();

}