Saya ingin membuat aplikasi saya terlihat lebih profesional, jadi saya memutuskan untuk membuat splash screen.
Bagaimana saya membuatnya dan kemudian mengimplementasikannya?
android
splash-screen
Efraim
sumber
sumber
Jawaban:
Bacaan lebih lanjut:
Jawaban lama:
CARA : Layar splash sederhana
Jawaban ini menunjukkan kepada Anda bagaimana menampilkan layar splash untuk waktu yang tetap ketika aplikasi Anda mulai karena alasan merek. Misalnya Anda mungkin memilih untuk menampilkan layar splash selama 3 detik. Namun jika Anda ingin menampilkan layar spash untuk jumlah waktu yang bervariasi (mis. Waktu startup aplikasi), Anda harus memeriksa jawaban Abdullah https://stackoverflow.com/a/15832037/401025 . Namun perlu diketahui bahwa startup aplikasi mungkin sangat cepat pada perangkat baru sehingga pengguna hanya akan melihat flash yang UX buruk.
Pertama, Anda perlu menentukan layar spash di
layout.xml
file AndaDan aktivitas Anda:
Itu saja ;)
sumber
SPLASH_DISPLAY_LENGTH
waktu. Anda harus melakukan ini sebagai gantinya: bignerdranch.com/blog/splash-screens-the-right-wayCatatan solusi ini tidak akan membiarkan pengguna menunggu lebih lama: penundaan layar splash tergantung pada waktu mulai aplikasi.
Ketika Anda membuka aplikasi Android apa pun yang Anda dapatkan secara default layar hitam apa saja dengan judul dan ikon aplikasi di atas, Anda dapat mengubahnya dengan menggunakan gaya / tema.
Pertama, buat style.xml di folder values dan tambahkan style ke dalamnya.
Alih-alih menggunakan
@android:style/Theme.DeviceDefault.Light.NoActionBar
Anda dapat menggunakan tema lain sebagai orangtua.Kedua, di aplikasi Anda Manifest.xml tambahkan
android:theme="@style/splashScreenTheme"
ke aktivitas utama Anda.Ketiga, Perbarui tema Anda di aktivitas peluncuran onCreate () Anda.
PEMBARUAN Lihat pos ini .
Terima kasih kepada @ mat1h dan @adelriosantiago
sumber
<item name="android:background">
akan menimpawindowBackground
. Dan tanpaandroid:background
ditentukan, latar belakang saya di setiap fragmen akan transparan mengungkapkan aktivitas di balik konten latar depan.Splash.java Anda mungkin terlihat seperti ini:
ubah
ActivityB.class
ke aktivitas apa pun yang ingin Anda mulai setelah layar splashperiksa file manifes Anda dan akan terlihat seperti
sumber
Jawaban di atas sangat bagus, tetapi saya ingin menambahkan sesuatu yang lain. Saya baru mengenal Android, saya menemui masalah ini selama pengembangan saya. Semoga ini bisa membantu orang seperti saya.
Layar Splash adalah titik masuk aplikasi saya, jadi tambahkan baris berikut di AndroidManifest.xml.
Layar splash seharusnya hanya muncul sekali dalam siklus hidup aplikasi, saya menggunakan variabel boolean untuk merekam keadaan layar splash, dan hanya menampilkannya pada pertama kali.
selamat coding!
sumber
android:noHistory="true"
diAndroidManifest.xml
untuk mencegah pengguna dari akan kembali ke splash screen menggunakan tombol kembali.Jawaban Abdullah sangat bagus. Tetapi saya ingin menambahkan lebih banyak detail dengan jawaban saya.
Menerapkan Layar Splash
Mengimplementasikan splash screen dengan cara yang benar sedikit berbeda dari yang Anda bayangkan. Tampilan splash yang Anda lihat harus siap segera, bahkan sebelum Anda dapat mengembang file tata letak dalam aktivitas splash Anda.
Jadi Anda tidak akan menggunakan file layout. Alih-alih, tentukan latar belakang layar splash Anda sebagai latar belakang tema aktivitas. Untuk melakukan ini, pertama buat XML drawable di res / drawable.
background_splash.xml
Itu hanya daftar layer dengan logo dalam warna latar belakang tengah dengannya.
Sekarang buka styles.xml dan tambahkan gaya ini
Tema ini harus actionbar dan dengan latar belakang yang baru saja kita buat di atas.
Dan dalam manifes Anda perlu mengatur SplashTheme ke aktivitas yang ingin Anda gunakan sebagai splash.
Kemudian di dalam kode aktivitas Anda navigasikan pengguna ke layar tertentu setelah splash menggunakan niat.
Itu cara yang tepat untuk dilakukan. Saya menggunakan referensi ini untuk menjawab.
sumber
YouTube
hal ini. Tapi saya pikir ukuran bitmap akan menjadi masalah karena Anda tidak dapat mengubah ukurannya menggunakanlayer-list
.Buat sebuah
Activity
SplashScreen.java
splashscreen.xml
akan seperti inisumber
Splash Screnn, secara default, tidak secara otomatis membuat Aplikasi Anda terlihat lebih profesional. Layar Splash yang dirancang secara profesional memiliki kemungkinan membuat Aplikasi Anda terlihat lebih profesional, tetapi jika Anda tidak tahu cara menulisnya, seberapa profesionalkah sisa Aplikasi Anda yang sebenarnya.
Satu-satunya alasan (alasan) untuk memiliki Layar Splash adalah karena Anda melakukan Perhitungan dalam jumlah besar atau sedang menunggu GPS / WiFi untuk memulai karena Aplikasi Anda bergantung pada itu sebelum mulai. Tanpa hasil Perhitungan atau akses ke GPS / WiFi (dll.) Aplikasi Anda mati dalam air, sehingga Anda merasa Anda memerlukan Splash Screen, dan HARUS memblokir tampilan Layar untuk Program yang sedang berjalan lainnya (termasuk Latar Belakang) ).
Seperti Layar Splash seharusnya terlihat seperti Aplikasi Layar Penuh Anda untuk memberi kesan bahwa itu telah diinisialisasi, maka setelah perhitungan panjang selesai rincian final bisa diisi (Gambar di-tweak). The kesempatan itu menjadi kasus atau bahwa itu adalah satu-satunya cara Program dapat dirancang perkasa kecil .
Akan lebih baik untuk memungkinkan Pengguna (dan seluruh OS) untuk melakukan sesuatu yang lain sementara mereka menunggu daripada merancang Program Anda untuk bergantung pada sesuatu yang akan memakan waktu cukup lama (ketika durasi menunggu tidak pasti).
Sudah ada Ikon di Ponsel Anda yang mengatakan bahwa GPS / WiFi mulai. Waktu atau ruang yang digunakan oleh Layar Splash dapat dihabiskan untuk memuat pra-perhitungan atau benar-benar melakukan Perhitungan. Lihat Tautan pertama di bawah ini untuk masalah yang Anda buat dan apa yang harus dipertimbangkan.
Jika Anda benar-benar harus menunggu Perhitungan atau GPS / WiFi ini, sebaiknya biarkan Aplikasi dimulai dan pop-up yang mengatakan bahwa perlu menunggu Perhitungan (Pesan "Inisialisasi" TEKSUAL baik-baik saja). Tunggu untuk GPS / WiFi diharapkan (jika mereka belum diaktifkan di Program lain) sehingga mengumumkan waktu tunggu mereka tidak perlu.
Ingatlah bahwa ketika Layar Splash memulai Program Anda sudah benar-benar berjalan, yang Anda lakukan hanyalah menunda penggunaan Program Anda dan memonopoli CPU / GPU untuk melakukan sesuatu yang sebagian besar merasa tidak perlu.
Sebaiknya kita benar-benar ingin menunggu dan melihat Layar Splash Anda setiap kali kami memulai Program Anda atau KAMI tidak akan merasa itu ditulis secara profesional. Membuat Layar Splash FULL Screen dan duplikat dari Layar Program yang sebenarnya (jadi kami pikir itu diinisialisasi padahal sebenarnya belum) MUNGKIN mencapai tujuan Anda (membuat Program Anda terlihat lebih profesional) tetapi saya tidak akan bertaruh banyak untuk itu.
Mengapa tidak melakukannya: http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/
Bagaimana melakukannya: https://encrypted.google.com/search?q=Android+splash+screen+source
Jadi ada alasan bagus untuk tidak melakukannya tetapi JIKA Anda yakin bahwa bagaimanapun keadaan Anda berada di luar contoh-contoh itu maka sarana untuk melakukannya diberikan di atas. Pastikan itu benar-benar membuat Aplikasi Anda terlihat lebih profesional atau Anda telah mengalahkan satu-satunya alasan yang Anda berikan untuk melakukan ini.
Ini seperti Saluran YouTube yang memulai setiap Video dengan Intro Grafis yang panjang (dan Outro) atau merasa perlu untuk menceritakan Lelucon atau menjelaskan apa yang terjadi selama seminggu terakhir (ketika itu bukan Saluran Komedi atau LifeStyles). Tunjukkan saja acaranya! (Jalankan saja Program).
sumber
Di atas semua jawaban benar-benar sangat baik. Tapi ada masalah kebocoran memori. Masalah ini sering dikenal di komunitas Android sebagai "Membocorkan Aktivitas" . Sekarang apa sebenarnya artinya?
Ketika perubahan konfigurasi terjadi, seperti perubahan orientasi, Android menghancurkan Activity dan membuatnya kembali. Biasanya, Pengumpul Sampah hanya akan menghapus memori yang dialokasikan dari instance Activity lama dan kita semua baik-baik saja.
"Membocorkan Aktivitas" mengacu pada situasi di mana Pengumpul Sampah tidak dapat menghapus memori yang dialokasikan dari instance Aktivitas lama karena
being (strong) referenced
berasal dari objek yang menjalankan instance Activity. Setiap aplikasi Android memiliki jumlah memori tertentu yang dialokasikan untuk itu. Ketika Pengumpul Sampah tidak dapat membebaskan memori yang tidak digunakan, kinerja aplikasi akan berkurang secara bertahap dan akhirnya rusak karenaOutOfMemory
kesalahan.Bagaimana cara menentukan apakah aplikasi bocor memori atau tidak? Cara tercepat adalah membuka tab Memori di Android Studio dan memperhatikan memori yang dialokasikan saat Anda mengubah orientasi. Jika memori yang dialokasikan terus meningkat dan tidak pernah berkurang maka Anda memiliki kebocoran memori.
1. Memori bocor ketika pengguna mengubah orientasi.
Pertama, Anda perlu menentukan layar splash di
splashscreen.xml
file sumber daya tata letak AndaUntuk informasi lebih lanjut silakan kunjungi tautan ini
sumber
Berhenti pada layar Splash untuk 4's 5 tidak perlu terlalu masuk akal. Tidak apa-apa jika Anda memuat sesuatu di latar belakang lain ikuti pendekatan ini untuk menerapkan splash screen: - Menerapkan splash screen dengan cara yang benar sedikit berbeda dari yang Anda bayangkan. Tampilan splash yang Anda lihat harus siap segera, bahkan sebelum Anda dapat mengembang file tata letak dalam aktivitas splash Anda.
Jadi Anda tidak akan menggunakan file layout. Alih-alih, tentukan latar belakang layar splash Anda sebagai latar belakang tema aktivitas. Untuk melakukan ini, pertama, buat XML drawable di res / drawable.
Di sini, saya telah mengatur warna latar belakang dan gambar.
Selanjutnya, Anda akan mengatur ini sebagai latar belakang aktivitas splash Anda dalam tema. Navigasikan ke file styles.xml Anda dan tambahkan tema baru untuk aktivitas splash Anda:
Di SplashTheme baru Anda, atur atribut latar belakang jendela ke XML Anda yang dapat digambar. Konfigurasikan ini sebagai tema aktivitas splash Anda di AndroidManifest.xml Anda:
Akhirnya, kelas SplashActivity seharusnya hanya meneruskan Anda ke aktivitas utama Anda:
Lebih detail baca ini: 1. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 2. http://blog.goodbarber.com/3-tips-to-create-a -great-splash-screen-for-your-mobile-app_a287.html
sumber
Ini kode lengkapnya di sini
SplashActivity.java
Di drawables buat bg_splash.xml ini
Di styles.xml buat tema khusus
dan akhirnya di AndroidManifest.xml tentukan tema untuk aktivitas Anda
Bersulang.
sumber
drawable
Layar splash tidak boleh dimuat dari file tata letak, mungkin masih ada jeda saat memuatnya.
Cara terbaik adalah membuat Tema hanya untuk SplashScreenActivity Anda dan atur
the android:windowBackground
ke sumber daya yang dapat ditarik.https://www.bignerdranch.com/blog/splash-screens-the-right-way/
Pendeknya:
Nyatakan SplashScreenActivity Anda di manifes:
Di SplashScreenActivity.java Anda:
Selanjutnya buat sumber daya untuk jendela latar belakang tema Anda:
File splash.xml yang dapat digambar:
sumber
Setelah Android Marshmallow , penggunaan Splash screen Produktif lainnya yang saya pikirkan adalah permintaan yang diperlukan
Android Permissions
di layar splash aplikasi Anda.sepertinya sebagian besar aplikasi menangani permintaan izin dengan cara ini.
Dialog membuat UIX buruk dan mereka memutuskan aliran utama dan membuat Anda memutuskan runtime dan kebenarannya adalah sebagian besar pengguna bahkan mungkin tidak peduli jika aplikasi Anda ingin menulis sesuatu pada kartu SD. Beberapa dari mereka bahkan mungkin tidak mengerti apa yang ingin kami sampaikan sampai kami menerjemahkannya dalam bahasa Inggris.
Meminta izin sekaligus membuat jumlah "jika lain" lebih sedikit sebelum setiap operasi dan membuat kode Anda terlihat berantakan.
Ini adalah contoh bagaimana Anda dapat meminta izin dalam aktivitas splash Anda untuk perangkat yang menjalankan Android OS 23+.
Jika semua izin diberikan ATAU sudah diberikan ATAU aplikasi berjalan pada Pre Marshmallow LALU pergi dan tampilkan konten utama dengan sedikit jeda setengah detik sehingga pengguna dapat menghargai upaya yang kami lakukan dalam membaca pertanyaan ini dan berusaha memberikan yang terbaik.
sumber
Anda tidak akan menggunakan file tata letak. Alih-alih, tentukan latar belakang layar splash Anda sebagai latar belakang tema aktivitas. Untuk melakukan ini, pertama buat XML drawable di res / drawable.
Catatan: semua kode di bawah ini tersedia Tautan GitHub
Di sini, saya telah mengatur warna latar belakang dan gambar.
Selanjutnya, Anda akan mengatur ini sebagai latar belakang aktivitas splash Anda dalam tema. Navigasikan ke file styles.xml Anda dan tambahkan tema baru untuk aktivitas splash Anda:
Di SplashTheme baru Anda, atur atribut latar belakang jendela ke XML Anda yang dapat digambar. Konfigurasikan ini sebagai tema aktivitas splash Anda di AndroidManifest.xml Anda:
Terakhir, kelas SplashActivity Anda hanya perlu meneruskan aktivitas utama Anda:
Perhatikan bahwa Anda bahkan tidak mengatur tampilan untuk SplashActivity ini. Tampilannya berasal dari tema. Ketika Anda mengatur UI untuk aktivitas splash Anda di tema, itu tersedia segera.
Jika Anda memang memiliki file tata letak untuk aktivitas splash Anda, file tata letak itu hanya akan terlihat oleh pengguna setelah aplikasi Anda sepenuhnya diinisialisasi, yang sudah terlambat. Anda ingin splash hanya ditampilkan dalam waktu yang sedikit sebelum aplikasi diinisialisasi.
sumber
sumber
Buat Aktivitas, beri kami Aktivitas bernama 'A', lalu buat file xml bernama myscreen.xml, dengan menetapkan gambar layar splash sebagai latar belakang, lalu gunakan penghitung waktu mundur untuk bernavigasi dari satu Aktivitas ke Aktivitas lainnya. Untuk mengetahui cara menggunakan penghitung waktu mundur, lihat jawaban saya di pertanyaan ini TimerTask di Android?
sumber
Contoh layar splash:
sumber
Layar splash adalah objek yang tidak dapat digunakan di Android: layar tidak dapat dimuat sesegera mungkin untuk menyembunyikan penundaan dimulainya aktivitas utama. Ada dua alasan untuk menggunakannya: iklan dan operasi jaringan.
Implementasi sebagai dialog membuat lompatan tanpa penundaan dari splash screen ke UI aktivitas utama.
Tata letak:
Dan mulai:
sumber
Pendekatan lain dicapai dengan menggunakan CountDownTimer
sumber
sumber
Sangat mudah & pendekatan gr8:
Pertama buat splash Anda dengan situs web berikut:
https://www.norio.be/android-feature-graphic-generator/
Pilih logo dan slogan Anda, pilih latar belakang Anda yang cantik. ubah ukurannya menjadi 4096x4096.
Sekarang unduh gambar itu dan uplodate ke:
https://apetools.webprofusion.com/app/#/tools/imagegorilla
Dan hasilkan semua layar splash yang dibutuhkan, semua perangkat, semua platform.
Nikmati!
Ada cukup banyak jawaban di sini yang akan membantu implementasi. posting ini dimaksudkan untuk membantu orang lain dengan langkah pertama membuat layar splash!
sumber
Bagaimana dengan layar peluncuran super fleksibel yang dapat menggunakan kode yang sama dan ditentukan di AndroidManifest.xml, sehingga kode tidak perlu diubah. Saya biasanya mengembangkan pustaka kode dan tidak suka mengkustomisasi kode karena ceroboh.
Kemudian SpashActivity sendiri mencari meta-data untuk "launch_class" untuk kemudian membuat Intent itu sendiri. "Durasi" data meta menentukan berapa lama layar splash tetap.
sumber
Kadang-kadang pengguna membuka
SplashActivity
dan berhenti segera tetapi aplikasi masihMainActivity
mengejarSPLASH_SCREEN_DISPLAY_LENGTH
.Untuk mencegahnya:
SplashActivity
Anda harus memeriksa apakahSplashActivity
sudah selesai atau belum sebelum pindah keMainActivity
Semoga bantuan ini
sumber
Meskipun ada jawaban yang bagus, saya akan menunjukkan cara yang disarankan google:
1) Pertama buat
Theme
layar splash: Anda memiliki tema yang disebutsplashscreenTheme
, tema peluncur Anda akan:catatan:
android:windowBackground
sudah menetapkan gambar splashscreen Anda tidakperlu melakukan ini di UI lagi.
Anda juga bisa menggunakan warna di sini alih-alih yang bisa digambar.
2) Atur tema untuk memanifestasikan splashscreenActivity
3) pastikan Anda launch_screen
drawable
tidak ada dalamdrawable
folder jika gambar Anda tidak kecil.Ini akan menghasilkan lebih cepat memulai layar mulai dan menyelamatkan Anda dari layar hitam
Ini juga menghindari penarikan berlebih
sumber
Ini adalah pos terbaik yang pernah saya lihat di layar splash: http://saulmm.github.io/avoding-android-cold-starts
Saúl Molinero menggunakan dua opsi berbeda untuk splash screen: Manfaatkan latar belakang jendela untuk menghidupkan layar awal Anda dan menampilkan UI placeholder (yang merupakan pilihan populer yang digunakan Google untuk sebagian besar aplikasi mereka hari ini).
Saya merujuk posting ini setiap kali saya perlu mempertimbangkan waktu mulai dingin dan menghindari dropoff pengguna karena waktu startup yang lama.
Semoga ini membantu!
sumber
Dalam kasus saya, saya tidak ingin membuat Aktivitas baru hanya untuk menampilkan gambar selama 2 detik. Saat memulai
MainAvtivity
, gambar dimuat ke pemegang menggunakan picasso, saya tahu ini membutuhkan waktu sekitar 1 detik untuk memuat jadi saya memutuskan untuk melakukan hal berikut di dalam MainActivity sayaOnCreate
:Ketika memulai aplikasi, hal pertama yang terjadi adalah
ImageView
ditampilkan dan statusBar dihapus dengan mengatur bendera jendela ke layar penuh. Lalu saya menggunakan aHandler
untuk menjalankan selama 2 detik, setelah 2 detik saya menghapus bendera layar penuh dan mengatur visibilitasImageView
keGONE
. Mudah, sederhana, efektif.sumber
Sangat sederhana di android kami hanya menggunakan konsep handler untuk mengimplementasikan splash screen
Di file java SplashScreenActivity Anda rekatkan kode ini.
Dalam file xml SplashScreenActivity Anda, letakkan gambar apa pun menggunakan imageview.
sumber
Anda dapat menambahkan ini di Metode onCreate Anda
Dan inisialisasi nilai waktu Anda dalam milidetik seperti yang Anda inginkan ...
untuk lebih detail unduh kode lengkap dari tautan ini ...
https://github.com/Mr-Perfectt/Splash-Screen
sumber
Di Kotlin tulis kode ini: -
Semoga ini bisa membantu Anda. Terima kasih ........
sumber
Kode Sederhana, berfungsi :) Percikan sederhana
sumber
sumber