Salut à tous,
Après de nombreuses recherches, je me suis aperçu qu’il y avait très peu de documentation à ce sujet et que même la communauté Android de StackOverflow n’a pas l’air très active… C’est pourquoi je me tourne vers vous pour poser une question concernant… les animations sous Android.
Je vous montre un peu le contexte. Je souhaite réaliser un splash screen, c’est-à-dire que mon activité principale ne sert qu’à afficher en grand le logo de mon appli, après un fadeIn. Et elle se conclut par un fadeOut. Et un fadeIn de l’activité suivante. Tout cela dès que l’utilisateur lance l’activité par défaut (e.g. au lancement de l’application).
J’en suis rendu à faire mon premier fadeIn, celui du splash screen. De préférence celui du logo mais déjà dans un premier temps, celui de l’UI de l’activité toute-entière.
Voici ce que j’ai fait.
AndroidManifest.xml
Ici, j’ai défini un nouveau thème que celui par défaut pour mon splash screen.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:theme="@style/MainActivityTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
styles.xml
J’ai indiqué le nouveau thème en question. Vous remarquez par ailleurs que :
-
Je définis un
windowAnimationStyle
qui pointe le dernier thème écrit dans ce fichier ; -
Ce dernier hérite de
Animation.Activity
et définit unactivityOpenEnterAnimation
pointant vers mon animation.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Material">
<!-- 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" />
<style name="MainActivityTheme" parent="AppTheme">
<item name="android:windowAnimationStyle">@style/MainActivityThemeAnimation</item>
</style>
<style name="MainActivityThemeAnimation" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/fade_out_home_activity</item>
</style>
</resources>
fade_out_home_activity.xml
Il s’agit de l’animation en question.
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromAlpha="0.0"
android:interpolator="@android:anim/anticipate_interpolator"
android:toAlpha="1.0" />
MainActivity.java
Voici, pour terminer, la classe de mon activité principale.
package com.example..;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.transition.Fade;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Ma question
Quand je lance mon application dans mon émulateur Android (si je vais dans settings > Informations, ça affiche que c’est Android 5.1.1), l’UI de l’activité s’affiche sans animation…
Infos complémentaires : build.gradle (Module: app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.exampan"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
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'
}