Animation d'un splash screen

a marqué ce sujet comme résolu.

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 :

  1. Je définis un windowAnimationStyle qui pointe le dernier thème écrit dans ce fichier ;

  2. Ce dernier hérite de Animation.Activity et définit un activityOpenEnterAnimation 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'
}
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte