Cara membuat animasi Splash Screen android

Bismillah,

Bosan dengan splash screen mu itu — itu aja? Mungkin udah saat nya move on pakai library kecje satu ini :D
namanya AVLoadingIndicatorView. Kalau baca dari si empunya sih deksripsi dari library nya seperti ini

AVLoadingIndicatorView is a collection of nice loading animations for Android.

Ya, sangat menarik sekali . hehe

Untuk library nya bisa di akses disini!

Nah, Kali ini saya ingin share step by step cara pembuatannya:
1. Terlebih dahulu buat sebuah project android

2. Tambahkan pada bagian gradlenya :

implementation 'com.wang.avi:library:2.1.3'

3. Setelah itu pada bagian xml layoutnya tambahkan codingan seperti ini :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:id="@+id/lv_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" />
<com.wang.avi.AVLoadingIndicatorView
android:id="@+id/avi"
style="@style/AVLoadingIndicatorView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
app:indicatorName="BallPulseIndicator" /> </LinearLayout>
</LinearLayout>

Tampilan preview layout

4. Pada Activity tambahkan codingan seperti ini :

lv_loading = (LinearLayout) findViewById(R.id.lv_loading);
avi= (AVLoadingIndicatorView) findViewById(R.id.avi);
avi.setIndicator("BallClipRotateMultipleIndicator");

Full codingan nya tampak seperti ini :

public class MainActivity extends AppCompatActivity {    //pembuatan variabel untuk linearlayout
private LinearLayout lv_loading;
private AVLoadingIndicatorView avi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv_loading = (LinearLayout) findViewById(R.id.lv_loading);
avi= (AVLoadingIndicatorView) findViewById(R.id.avi);
avi.setIndicator("BallClipRotateMultipleIndicator");
//membuat sebuah proses yang ter delay
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//mendefenisikan Intent activity
Intent i = new Intent(MainActivity.this,MainActivity.class);
startActivity(i);
//finish berguna untuk mengakhiri activity
//disini saya menggunakan finish,supaya ketika menekan tombol back
//tidak kembali pada activity SplashScreen nya
finish();
}
//disini maksud 3000 nya itu adalah lama screen ini terdelay 3 detik,dalam satuan mili second
}, 3000);
}

}

Silahkan ganti tipe indikator nya sesuai dengan yang kita inginkan , Untuk tipe indikatornya seperti dibawah ini :

Running Project maka anda akan melihat animasi yang sangat epic sekali ;)

Download project dari github

Video Demo :

https://www.youtube.com/watch?v=pmSJD0U-obI

Mulai Android 12, animasi peluncuran untuk semua aplikasi saat berjalan di perangkat dengan Android 12 atau yang lebih baru. Fitur ini meliputi gerakan ke dalam aplikasi saat peluncuran, layar pembuka yang menampilkan ikon aplikasi, dan transisi ke aplikasi itu sendiri.

Cara membuat animasi Splash Screen android
Gambar 1: Contoh layar pembuka

Pengalaman ini tidak hanya menghadirkan elemen desain standar ke setiap peluncuran aplikasi, tetapi juga elemen yang dapat disesuaikan sehingga aplikasi Anda dapat mempertahankan branding yang unik.

Selain menggunakan SplashScreen platform API, Anda juga dapat menggunakan library compat SplashScreen, yang menggabungkan SplashScreen API.

Cara kerja layar pembuka

Jika pengguna meluncurkan aplikasi saat proses aplikasi tidak berjalan (cold start) atau Aktivitas belum dibuat (warm start), peristiwa berikut akan terjadi. (Layar pembuka tidak pernah ditampilkan selama hot start).

  1. Sistem menampilkan layar pembuka menggunakan tema dan animasi yang Anda tentukan.

  2. Setelah aplikasi siap, layar pembuka akan ditutup dan aplikasi akan ditampilkan.

Elemen dan mekanisme layar pembuka

Elemen layar pembuka ditentukan oleh file resource XML dalam Manifes Android. Setiap elemen memiliki versi mode terang dan gelap.

Elemen layar pembuka yang dapat disesuaikan terdiri dari ikon aplikasi, latar belakang ikon, dan latar belakang jendela:

Cara membuat animasi Splash Screen android
Gambar 2: Elemen yang dapat disesuaikan dari layar pembuka

Perhatikan pertimbangan berikut terkait elemen ini:

1 Ikon aplikasi harus berupa vektor drawable, dan dapat bersifat statis atau animasi. Meskipun animasi dapat memiliki durasi tidak terbatas, sebaiknya jangan melebihi 1.000 milidetik. Secara default, ikon peluncur akan digunakan.

2 Latar belakang ikon bersifat opsional, dan berguna jika Anda memerlukan lebih banyak kontras antara ikon dan latar belakang jendela. Jika Anda menggunakan ikon adaptif, latar belakangnya akan ditampilkan jika kontrasnya cukup dengan latar belakang jendela. 3 Seperti halnya ikon adaptif, sepertiga latar depan disamarkan.

4 Latar belakang jendela terdiri dari satu warna buram. Jika latar belakang jendela disetel dan berwarna polos, latar belakang ini akan digunakan secara default saat atribut tidak disetel.

Dimensi Layar Pembuka

Ikon layar pembuka menggunakan spesifikasi yang sama dengan Ikon adaptif, sebagai berikut:

  • Gambar dengan merek: Harus berukuran 200×80 dp.
  • Ikon aplikasi dengan latar belakang ikon: Harus berukuran 240×240 dp, dan sesuai dengan lingkaran berdiameter 160 dp.
  • Ikon aplikasi tanpa latar belakang ikon: Harus berukuran 288×288 dp, dan sesuai dengan lingkaran berdiameter 192 dp.

Misalnya, jika ukuran penuh gambar adalah 300×300 dp, ikon harus sesuai dengan lingkaran berdiameter 200 dp. Semua yang ada di luar lingkaran akan terlihat (tersamarkan).

Cara membuat animasi Splash Screen android
Gambar 3: Dimensi ikon layar pembuka untuk latar belakang solid dan transparan

Animasi Layar Pembuka dan urutan peluncuran

Latensi tambahan sering dikaitkan dengan peluncuran aplikasi saat cold start. Menambahkan ikon animasi ke layar pembuka Anda memiliki daya tarik estetika yang terlihat jelas dan memberikan pengalaman yang lebih premium. Selain itu, ada manfaat tambahan: riset pengguna menunjukkan bahwa waktu startup yang dirasakan lebih sedikit saat melihat animasi.

Animasi layar pembuka disematkan dalam komponen urutan peluncuran berikut.

  1. Animasi enter (masuk): Ini terdiri dari tampilan sistem ke layar pembuka. Animasi ini dikontrol oleh sistem dan tidak dapat disesuaikan.

  2. Layar pembuka: Layar pembuka dapat disesuaikan, sehingga Anda dapat menyediakan animasi dan branding logo Anda sendiri. Layar pembuka harus memenuhi persyaratan yang dijelaskan dalam dokumen ini agar berfungsi dengan baik.

  3. Animasi exit (keluar): Ini terdiri dari operasi animasi yang menyembunyikan layar pembuka. Jika ingin menyesuaikannya, Anda harus memiliki akses ke SplashScreenView dan ikonnya serta dapat menjalankan animasi di sana menggunakan setelan transformasi, opasitas, dan warna. Dalam hal ini, layar pembuka harus dihapus secara manual jika animasi telah selesai.

Saat menjalankan animasi ikon, peluncuran aplikasi memberi Anda opsi untuk melewati urutan jika aplikasi sudah siap sebelumnya. Aplikasi akan memicu onResume() atau waktu layar pembuka berakhir secara otomatis, jadi pastikan gerakan dapat dilewati dengan baik. Layar pembuka hanya boleh ditutup dengan onResume() jika aplikasi stabil dari sudut pandang visual, sehingga tidak perlu indikator lingkaran berputar tambahan. Antarmuka yang tidak lengkap dapat membingungkan pengguna dan memberikan kesan tidak dapat diprediksi atau kurang tepat.

Persyaratan animasi layar pembuka

Layar pembuka Anda harus mematuhi spesifikasi berikut:

  • Setel satu warna latar belakang jendela tanpa transparansi. Mode Siang dan Malam didukung dengan library compat Layar Pembuka.

  • Pastikan ikon animasi memenuhi spesifikasi berikut:

    • Format: Ikon harus berupa XML Animated Vector Drawable (AVD).
    • Dimensi: Ikon AVD harus berukuran empat kali lebih besar dari ikon adaptif, seperti berikut:
      • Area ikon harus 432 dp (dengan kata lain, empat kali 108 dp area dari ikon adaptif yang tidak disamarkan).
      • Dua pertiga bagian dalam gambar terlihat pada ikon peluncur, dan harus berukuran 288 dp (dengan kata lain, empat kali 72 dp yang membentuk area dalam yang disamarkan pada ikon adaptif).
    • Durasi: Sebaiknya jangan melebihi 1.000 md untuk ponsel. Anda dapat menggunakan awal yang tertunda, tetapi tidak boleh lebih dari 166 milidetik. Jika waktu startup aplikasi lebih dari 1.000 md, sebaiknya gunakan animasi berulang.
  • Tetapkan waktu yang sesuai untuk menutup layar pembuka, yang terjadi saat aplikasi Anda menggambar frame pertamanya. Anda dapat menyesuaikannya lebih lanjut seperti yang dijelaskan dalam dokumen di Membiarkan layar pembuka tetap muncul di layar untuk waktu yang lebih lama.

Referensi Layar Pembuka

Cara membuat animasi Splash Screen android
Gambar 4: Contoh AVD

Download starter kit contoh kami, yang menunjukkan cara membuat, memformat, dan mengekspor animasi ke AVD.

  • File project Adobe After Effects animasi
  • File XML AVD final yang diekspor
  • Contoh GIF animasi

Dengan mendownload file ini, Anda menyetujui Persyaratan Layanan Google.

Kebijakan Privasi Google menjelaskan cara penanganan data di layanan ini.

Menyesuaikan layar pembuka di aplikasi Anda

Secara default, SplashScreen menggunakan windowBackground tema Anda jika berupa satu warna dan ikon peluncur. Penyesuaian layar pembuka dilakukan dengan menambahkan atribut ke tema aplikasi.

Layar pembuka aplikasi Anda dapat disesuaikan menggunakan salah satu cara berikut:

  • Menyetel atribut tema untuk mengubah tampilannya

  • Menyimpannya di layar untuk jangka waktu yang lebih lama

  • Menyesuaikan animasi untuk menutup layar pembuka

Menetapkan tema untuk layar pembuka untuk mengubah tampilannya

Anda dapat menentukan atribut berikut di tema Aktivitas untuk menyesuaikan layar pembuka aplikasi Anda. Jika Anda sudah memiliki implementasi layar pembuka yang lama dan telah menggunakan atribut seperti android:windowBackground, sebaiknya sediakan file resource alternatif untuk Android 12 dan versi yang lebih baru.

  1. Gunakan windowSplashScreenBackground untuk mengisi latar belakang dengan satu warna tertentu:

    <item name="android:windowSplashScreenBackground">@color/...</item>
    
  2. Gunakan windowSplashScreenAnimatedIcon untuk mengganti ikon di bagian tengah jendela mulai. Jika objek dapat dianimasikan dan digambar melalui AnimationDrawable dan AnimatedVectorDrawable, Anda juga perlu menyetel windowSplashScreenAnimationDuration untuk memutar animasi saat menampilkan jendela awal.

    <item name="android:windowSplashScreenAnimatedIcon">@drawable/...</item>
    
  3. Gunakan windowSplashScreenAnimationDuration untuk menunjukkan durasi animasi ikon layar pembuka. Setelan ini tidak akan berpengaruh pada waktu aktual saat layar pembuka ditampilkan, tetapi Anda dapat mengambilnya saat menyesuaikan animasi keluar layar pembuka menggunakan SplashScreenView#getIconAnimationDuration. Lihat Mempertahankan layar pembuka untuk waktu yang lebih lama di bagian berikut untuk mengetahui detail lebih lanjut.

    <item name="android:windowSplashScreenAnimationDuration">1000</item>
    
  4. Gunakan windowSplashScreenIconBackgroundColor untuk menetapkan latar belakang di balik ikon layar pembuka. Ini berguna jika tidak ada cukup kontras antara latar belakang jendela dan ikon.

    <item name="android:windowSplashScreenIconBackgroundColor">@color/...</item>
    
  5. Anda juga dapat menggunakan windowSplashScreenBrandingImage untuk menyetel gambar agar ditampilkan di bagian bawah layar pembuka. Pedoman desain menyarankan untuk tidak menggunakan gambar dengan merek.

    <item name="android:windowSplashScreenBrandingImage">@drawable/...</item>
    

Membiarkan layar pembuka tetap muncul di layar untuk waktu yang lebih lama

Layar pembuka ditutup setelah aplikasi Anda selesai menggambar frame pertamanya. Jika perlu memuat sedikit data seperti setelan dalam aplikasi dari disk lokal secara asinkron, Anda dapat menggunakan ViewTreeObserver.OnPreDrawListener untuk menangguhkan aplikasi menggambar frame pertamanya.

Jika aktivitas awal Anda selesai sebelum menggambar (misalnya, dengan tidak menyetel tampilan konten dan menyelesaikannya sebelum onResume), pemroses pra-gambar tidak diperlukan.

Kotlin

// Create a new event for the activity.
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Set the layout for the content view.
    setContentView(R.layout.main_activity)

    // Set up an OnPreDrawListener to the root view.
    val content: View = findViewById(android.R.id.content)
    content.viewTreeObserver.addOnPreDrawListener(
        object : ViewTreeObserver.OnPreDrawListener {
            override fun onPreDraw(): Boolean {
                // Check if the initial data is ready.
                return if (viewModel.isReady) {
                    // The content is ready; start drawing.
                    content.viewTreeObserver.removeOnPreDrawListener(this)
                    true
                } else {
                    // The content is not ready; suspend.
                    false
                }
            }
        }
    )
}

Java

// Create a new event for the activity.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Set the layout for the content view.
    setContentView(R.layout.main_activity);

    // Set up an OnPreDrawListener to the root view.
    final View content = findViewById(android.R.id.content);
    content.getViewTreeObserver().addOnPreDrawListener(
            new ViewTreeObserver.OnPreDrawListener() {
                @Override
                public boolean onPreDraw() {
                    // Check if the initial data is ready.
                    if (mViewModel.isReady()) {
                        // The content is ready; start drawing.
                        content.getViewTreeObserver().removeOnPreDrawListener(this);
                        return true;
                    } else {
                        // The content is not ready; suspend.
                        return false;
                    }
                }
            });
}

Menyesuaikan animasi untuk menutup layar pembuka

Anda dapat menyesuaikan animasi layar pembuka lebih lanjut melalui Activity.getSplashScreen().

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...

    // Add a callback that's called when the splash screen is animating to
    // the app content.
    splashScreen.setOnExitAnimationListener { splashScreenView ->
        // Create your custom animation.
        val slideUp = ObjectAnimator.ofFloat(
            splashScreenView,
            View.TRANSLATION_Y,
            0f,
            -splashScreenView.height.toFloat()
        )
        slideUp.interpolator = AnticipateInterpolator()
        slideUp.duration = 200L

        // Call SplashScreenView.remove at the end of your custom animation.
        slideUp.doOnEnd { splashScreenView.remove() }

        // Run your animation.
        slideUp.start()
    }
}

Java

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...

    // Add a callback that's called when the splash screen is animating to
    // the app content.
    getSplashScreen().setOnExitAnimationListener(splashScreenView -> {
        final ObjectAnimator slideUp = ObjectAnimator.ofFloat(
                splashScreenView,
                View.TRANSLATION_Y,
                0f,
                -splashScreenView.getHeight()
        );
        slideUp.setInterpolator(new AnticipateInterpolator());
        slideUp.setDuration(200L);

        // Call SplashScreenView.remove at the end of your custom animation.
        slideUp.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                splashScreenView.remove();
            }
        });

        // Run your animation.
        slideUp.start();
    });
}

Pada awal callback ini, animasi vektor drawable pada layar pembuka telah dimulai. Bergantung pada durasi peluncuran aplikasi, drawable dapat berada di tengah animasinya. Gunakan SplashScreenView.getIconAnimationStart untuk mengetahui kapan animasi dimulai. Anda dapat menghitung sisa durasi animasi ikon sebagai berikut:

Kotlin

// Get the duration of the animated vector drawable.
val animationDuration = splashScreenView.iconAnimationDuration
// Get the start time of the animation.
val animationStart = splashScreenView.iconAnimationStart
// Calculate the remaining duration of the animation.
val remainingDuration = if (animationDuration != null && animationStart != null) {
    (animationDuration - Duration.between(animationStart, Instant.now()))
        .toMillis()
        .coerceAtLeast(0L)
} else {
    0L
}

Java

// Get the duration of the animated vector drawable.
Duration animationDuration = splashScreenView.getIconAnimationDuration();
// Get the start time of the animation.
Instant animationStart = splashScreenView.getIconAnimationStart();
// Calculate the remaining duration of the animation.
long remainingDuration;
if (animationDuration != null && animationStart != null) {
    remainingDuration = animationDuration.minus(
            Duration.between(animationStart, Instant.now())
    ).toMillis();
    remainingDuration = Math.max(remainingDuration, 0L);
} else {
    remainingDuration = 0L;
}

Langkah langkah membuat splash screen?

Cara Membuat Splash Screen dengan Mudah di Android Studio.
Buat project baru. Buka android studio kemudian klik creat new project. ... .
2. Atur layout. Selanjutnya atur layout splash screennya pada activity_main.xml. ... .
3. Atur style. Pada styles. ... .
4. Buat Activity_home. ... .
MainActivity.java. ... .
6. AndroidManifests.xml..

Apa fungsi dari splash screen?

Splash screen adalah tampilan awal dari aplikasi yang akan menampilkan logo maupun nama aplikasi setiap kali aplikasi akan dijalankan.

Apa yang dimaksud dengan splash screen?

Splash Screen merupakan salah satu pattern dalam Android Development. Splash Screen diimplementasikan pada saat aplikasi mulai dijalankan dengan memperlihatkan brand logo aplikasi. Hasil akhirnya akan seperti ini.