Membuat Splash Screen di Aplikasi Android dengan Kotlin

Splash screen adalah layar pembuka yang muncul saat aplikasi pertama kali dijalankan. Ini biasanya digunakan untuk menampilkan logo atau nama aplikasi sebelum masuk ke aktivitas utama. Artikel ini akan membahas cara membuat splash screen yang tampil selama beberapa detik sebelum beralih ke aktivitas login.

Langkah-Langkah

  1. Buat Aktivitas Splash Screen:
    Buat aktivitas baru bernama SplashScreen.kt.
   package com.app.fintrack

   import android.content.Intent
   import android.os.Bundle
   import android.os.Handler
   import android.os.Looper
   import androidx.activity.enableEdgeToEdge
   import androidx.appcompat.app.AppCompatActivity
   import androidx.core.view.ViewCompat
   import androidx.core.view.WindowInsetsCompat

   class SplashScreen : AppCompatActivity() {

       private val splashDisplayLength: Long = 3000 // Durasi dalam milidetik (3000 ms = 3 detik)

       override fun onCreate(savedInstanceState: Bundle?) {
           super.onCreate(savedInstanceState)
           enableEdgeToEdge()
           setContentView(R.layout.activity_splash_screen)

           ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
               val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
               v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
               insets
           }

           // Menunda dan mengarahkan ke aktivitas login
           Handler(Looper.getMainLooper()).postDelayed({
               val mainIntent = Intent(this, LoginActivity::class.java)
               startActivity(mainIntent)
               finish()
           }, splashDisplayLength)
       }
   }
  1. Layout File:
    Buat layout untuk activity_splash_screen.xml.
   <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="@drawable/splash_background">

       <ImageView
           android:id="@+id/main"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerInParent="true"
           android:src="@drawable/your_logo" />
   </RelativeLayout>
  1. Daftarkan SplashScreen di AndroidManifest.xml:
    Pastikan SplashScreen dan LoginActivity terdaftar di AndroidManifest.xml.
   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.app.fintrack">

       <application
           ...>
           <activity android:name=".SplashScreen">
               <intent-filter>
                   <action android:name="android.intent.action.MAIN" />
                   <category android:name="android.intent.category.LAUNCHER" />
               </intent-filter>
           </activity>
           <activity android:name=".LoginActivity" />
           ...
       </application>

   </manifest>

Penjelasan

  • Handler dengan Looper: Handler(Looper.getMainLooper()).postDelayed digunakan untuk menunda eksekusi kode di dalamnya selama 3 detik.
  • Memulai LoginActivity: Menggunakan Intent untuk memulai LoginActivity setelah splash screen.
  • Menutup SplashScreen: finish() digunakan untuk menghapus SplashScreen dari back stack sehingga tidak bisa kembali ke sana dengan tombol back.

Dengan langkah-langkah di atas, Anda dapat membuat splash screen yang tampil selama beberapa detik sebelum beralih ke aktivitas login.