注意:本主题的末尾列出了类似的问题,您将看到我已经考虑了他们的答案和评论... 但是没有任何效果。
我正在为我的Android应用程序开发初始屏幕。此初始屏幕在主要活动中,并且逐渐消失。淡入淡出后,主要活动将开始另一个活动。
问题在于主要活动在不显示褪色效果的情况下开始了另一个活动。
模拟器使用如下所示的AVD:API级别为27,Android为8.1 Oreo。
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'
}
我...:
创建了 MainActivity.java 并将startActivity
和overridePendingTransition
调用放入
在 AndroidManifest.xml 中创建了两个主题(一个用于主要活动,另一个用于另一个活动)。我在应用程序的主题中将windowActivityTransitions
设置为true
。
在 anim / fade_out_home_activity.xml 中为动画创建样式(因此在主活动中)。
创建了其他活动(包括新的.java,新的.xml和清单的更新)。
公共类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);
}
}
<?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"/>
<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。
什么都没用,我太疯狂了,我浪费了时间在两个活动之间做一个简单的动画!刚开始时,我还想执行另一个动画,但是当我放弃这个主意时(有人告诉我这是不可能的,您可以在上面的链接中找到答案或评论)。
答案 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();
}