Saya perlu menerapkan splash screen di aplikasi honeycomb saya. Saya menggunakan kode ini di onCreate aktivitas untuk menampilkan splash:
setContentView(R.layout.splash);
getActionBar().hide();
dan kode ini untuk menampilkan UI utama setelah beberapa saat:
setContentView(R.layout.main);
getActionBar().show();
Tetapi sebelum onCreate dipanggil dan splash muncul, ada sedikit waktu ketika bilah tindakan ditampilkan.
Bagaimana saya bisa membuat bilah tindakan tidak terlihat?
Saya mencoba menerapkan tema ke aktivitas tanpa bilah tindakan:
<item name="android:windowActionBar">false</item>
tetapi dalam hal ini getActionBar () selalu mengembalikan nol dan saya tidak menemukan cara untuk menunjukkannya lagi.
android
android-3.0-honeycomb
android-actionbar
Ilya Izhovkin
sumber
sumber
Theme.AppCompat.Light
... gunakan ini Cara Menjawab [1] [1]: stackoverflow.com/a/25365193/1364896Jawaban:
Pengaturan
android:windowActionBar="false"
benar-benar menonaktifkan ActionBar tetapi kemudian, seperti yang Anda katakan,getActionBar();
mengembalikan nol. Ini diselesaikan dengan:Ini menciptakan ActionBar dan segera menyembunyikannya sebelum sempat ditampilkan.
Tapi sekarang ada masalah lain. Setelah memasukkan
windowActionBar="false"
tema, Kegiatan menggambar Judul Jendela yang normal alih-alih ActionBar.Jika kami mencoba menghindari ini dengan menggunakan beberapa
*.NoTitleBar
tema saham atau kami mencoba untuk memasukkan<item name="android:windowNoTitle">true</item>
tema kami sendiri, itu tidak akan berhasil.Alasannya adalah bahwa ActionBar tergantung pada Judul Jendela untuk menampilkan dirinya - yaitu ActionBar adalah Judul Jendela yang diubah.
Jadi trik yang dapat membantu kami adalah menambahkan satu hal lagi ke tema Aktivitas kami xml:
Ini akan membuat Judul Jendela dengan tinggi nol, sehingga praktis tidak terlihat.
Dalam kasus Anda, setelah Anda selesai menampilkan layar splash, Anda cukup menelepon
dan kamu selesai. Aktivitas akan dimulai tanpa ActionBar yang berkedip, atau Judul Jendela yang ditampilkan.
ADDON: Jika Anda menampilkan dan menyembunyikan ActionBar beberapa kali mungkin Anda telah memperhatikan bahwa pertama menunjukkan ini tidak animasi. Sejak saat itu menunjukkan dan menyembunyikan dianimasikan. Jika Anda juga ingin membuat animasi pada pertunjukan pertama, Anda dapat menggunakan ini:
Hal yang sama dapat dicapai dengan:
tetapi mungkin perlu beberapa logika tambahan untuk memeriksa apakah ini adalah tampilan pertama dari Kegiatan.
Idenya adalah untuk menunda sedikit persembunyian ActionBar. Di satu sisi kita membiarkan ActionBar ditampilkan, tetapi kemudian sembunyikan segera. Jadi kita melampaui pertunjukkan non-animasi pertama dan pertunjukkan berikutnya akan dianggap kedua, jadi itu akan dianimasikan.
Seperti yang mungkin sudah Anda duga, ada kemungkinan ActionBar bisa dilihat sebelum disembunyikan oleh operasi yang tertunda. Ini sebenarnya masalahnya. Sebagian besar waktu tidak ada yang terlihat tetapi, sesekali, Anda dapat melihat flicker ActionBar untuk sepersekian detik.
Bagaimanapun ini bukan solusi yang bagus, jadi saya menyambut setiap saran.
Selain untuk pengguna tindakan dukungan v7, kodenya adalah:
sumber
setTheme
? Karena jawaban Anda bekerja dengan baik jika saya mengatur tema dari Manifest, tetapi jika saya melakukannya dionCreate
(dalam kasus saya tema tergantung pada preferensi untuk tema gelap) bar tindakan holo default berkedip sebelum yang saya atur di tema saya bagaimanapun. Tapi mungkin ini layak pertanyaan SO lengkap lainnya.android:theme="@android:style/Theme.NoTitleBar"
ke dalam Manifest dan kemudiansetTheme(R.style.MyTheme)
di aktivitas utamaonCreate
; Ini memastikan (di Android 4+) menghindari flash holo defaultActionBar
sebelum yang saya definisikan dalam tema saya (saya tiba di sini mencari cara untuk mengatasinya; Saya sebenarnya tidak memerlukan splash-screen).getSupportActionBar().hide();
setelahgetWindow().requestFeature(Window.FEATURE_ACTION_BAR);
dan semuanya meledak dengan NPE. Ada ide? Masalah denganTheme.AppCompat
?Menggunakan kode sederhana ini di file .class Anda untuk menyembunyikan bilah tindakan
sumber
Jika Anda menggunakan ActionBarSherlock, gunakan Tema Theme.Sherlock.NoActionBar di Aktivitas Anda
sumber
<activity android:theme="@android:style/Theme.NoActionBar">
.Theme.Sherlock.NoActionBar
berarti menelepongetActionBar()
ataugetSupportActionBar()
(untuk selanjutnya menampilkan bilah tindakan) mengembalikan nol ...error: Error: No resource found that matches the given name (at 'theme' with value '@android:style/ Theme.NoActionBar').
Buat dua gaya:
Tetapkan AppThemeNoBar sebagai tema aplikasi dan AppThemeBar ke aktivitas di mana Anda ingin menampilkan ActionBar. Menggunakan dua gaya Anda tidak akan melihat bilah Tindakan saat pandangan sedang memuat.
Periksa tautan ini Android: sembunyikan bilah tindakan saat melihat memuat
sumber
Hai Saya punya solusi sederhana dengan menggunakan 2 tema
Tema layar splash (tambahkan ke manifes):
<style name="SplashTheme" parent="@android:style/Theme.Holo.NoActionBar"> <item name="android:windowBackground">@color/red</item> </style>
tema normal (tambahkan dalam aktivitas Anda dengan setTheme (R.style.Theme)):
<style name="Theme" parent="@style/Theme.Holo"> <item name="android:windowBackground">@color/blue</item> </style>
Untuk mendukung SDK 10:
sumber
Saya juga mencoba menyembunyikan Action Bar di Android 2.2, tetapi tidak ada solusi yang berhasil. Semuanya berakhir dengan kecelakaan. Saya memeriksa DDMS LOg, Ia memberi tahu saya untuk menggunakan 'Theme.AppCompat'.T terakhir saya memecahkan masalah dengan mengubah
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
Bariske
android:theme="@style/Theme.AppCompat.NoActionBar"
dan itu berhasil, tetapi Antarmuka gelap.lalu saya coba
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
dan akhirnya mendapatkan apa yang saya inginkan.Setelah itu ketika saya mencari tentang 'AppCompat' di Situs Pengembang saya mendapat ini.
Jadi saya pikir Solusi untuk Android 2.2 adalah
Dan maaf untuk bahasa Inggris burukku Seperti Selalu.
sumber
Hasil terbaik bagi saya adalah membuat aktivitas dengan ThemeNoTitleBar dan tanpa konten sebagai peluncur. Maka kegiatan ini langsung menelepon ke yang lain.
Tentu saja jika mau, Anda dapat menambahkan konten ke Aktivitas Splash tetapi dalam kasus saya, saya hanya ingin menampilkan aplikasi secara langsung.
Nyata:
Aktivitas:
}
sumber
Jika Anda menggunakan satu
Activity
termasuk layar splash, maka Anda dapat melakukan ini jika menggunakanSherlockActionBar
Setelah layar splash, Anda dapat menampilkannya lagi dengan ...
Seharusnya sama dengan asli
ActionBar
Android.sumber
Solusi @Clerics bekerja. Namun ini tampaknya juga menjadi masalah dengan beberapa aplikasi bawaan Google: Google, Play Store, Talk. Juga aplikasi besar lainnya seperti skype.
EDIT : Solusi di bawah ini telah memberi saya masalah untuk actionbarsherlock on api <4.0, alasannya setTheme tidak bekerja sandwich es krim pre
Tambahkan berikut ini dalam manifes Anda di dalam tag aplikasi atau aktivitas Anda:
Dan kemudian dalam aktivitas utama Anda:
sumber
terbaik dan sederhana
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
sumber
2015, menggunakan dukungan perpustakaan v7 dengan tema AppCompat, setel tema ini untuk Aktivitas Anda.
sumber
Untuk
Splashscreen
Anda harus menggunakan baris inimanifest
dan jangan gunakangetActionBar()
dan sekali ketika Splash
Activity
selesaiActivity
digunakan utama di bawah ini atau tidak sama sekalisumber
<item android:name="android:windowActionBar">true</item>
menghilangkan kesalahan ini, tetapi saya tidak tahu apakah masih berfungsi.Coba ini, ini berfungsi untuk saya:
Di bawah ini menghilangkan bilah judul aktivitas
Di bawah ini menghilangkan bilah notifikasi untuk membuat aktivitas menjadi layar penuh
(Contoh Lengkap Di Bawah) Perhatikan: Metode-metode ini dipanggil sebelum kita menetapkan tampilan konten aktivitas kita
sumber
ini mungkin berguna,
tambahkan ini ke manifes Anda
Bersulang
sumber
Cara terbaik yang saya temukan setelah membaca semua opsi yang tersedia adalah mengatur tema utama tanpa ActionBar dan kemudian mengatur kode MyTheme dalam induk dari semua Kegiatan.
Nyata:
BaseActivity:
Cara ini membantu saya menghindari ActionBar saat aplikasi dimulai!
sumber
Solusi yang sudah diposting datang dengan efek samping, bahwa panggilan .show () pertama tidak menghidupkan ActionBar untuk saya. Saya punya solusi bagus lain, yang memperbaiki itu:
Buat yang dapat digambar transparan - sesuatu seperti itu:
Tetapkan latar belakang bilah tindakan yang sebenarnya menjadi tampilan khusus yang tidak terlihat yang Anda tetapkan di bilah tindakan:
Atur latar belakang transparan untuk actionbar di onCreate:
Penting: Jangan sembunyikan bilah tindakan segera di onCreate, tetapi dengan sedikit penundaan nanti - misalnya ketika tata letak selesai dengan pembuatan:
Sebelum panggilan .show () pertama Anda, atur tampilan khusus agar terlihat:
sumber
Jika Anda memiliki null karena Anda menggunakan perpustakaan dukungan ,
getActionBar()
Anda tidak perlu menelepongetSupportActionBar()
.sumber
Cukup tambahkan ini ke MainActivity Anda di fungsi onCreate.
sumber
supportActionBar?.apply { hide() }
Letakkan splash screen Anda di aktivitas yang terpisah dan gunakan metode
startActivityForResult
aktivitas utama AndaonCreate
untuk menampilkannya. Ini berfungsi karena, menurut dokumen:Anda mungkin harus melakukan ini hanya jika argumennya
onCreate
adalahnull
(menunjukkan peluncuran baru aktivitas Anda, sebagai lawan memulai ulang karena perubahan konfigurasi).sumber
Saya masih memiliki kesalahan dengan null pointer dan akhirnya membantu ketika saya pertama kali memanggil getWindow (). RequestFeature () dan kemudian super.onCreate ()
sumber
Cukup tambahkan ini di styles.xml Anda
sumber
Sebenarnya, Anda bisa mengatur splash
Activity
withNoActionBar
dan mengatur main Andaactivity
dengan action bar.sumber
Cara terbaik untuk melakukan ini adalah membuat dua aktivitas pertama sebagai aktivitas kosong dan konten yang ingin Anda masukkan dan kemudian setelah beberapa waktu aktifkan aktivitas lain. Dengan mengikuti cara ini, Anda dapat menjadikan aktivitas pertama sebagai layar pembuka tanpa bilah tindakan atau apa pun. Inilah kegiatan pertama saya
Setelah itu, Anda dapat menempatkan aktivitas apa pun sebagai aktivitas pertama. Jika Anda tidak menginginkan bilah tindakan di layar apa pun, tambahkan saja ini dalam gaya Anda
sumber
Studio Android menyediakan template bangun untuk layar penuh, jika Anda menggunakan studio Android Anda dapat mengikuti langkah di bawah ini untuk mengimplementasikan aktivitas layar penuh.
Selesai Studio Android melakukan pekerjaan Anda, sekarang Anda dapat memeriksa kode untuk layar penuh.
sumber
ini adalah cara terbaik saya menggunakan Go ke file java, setelah
onCreate
:sumber
Saya menyadari bahwa memposting tautan bukan cara terbaik untuk melakukan sesuatu, tetapi saya sangat menyarankan Anda membaca dokumentasi berikut dari Google sendiri. Ini adalah dokumen resmi android tentang cara mengontrol sistem Anda ui (hal-hal seperti actionbar, nav bar dll). Sayangnya info ini terlalu banyak untuk diposkan secara langsung, tetapi setelah membaca ini Anda akan mengerti persis bagaimana menampilkan dan menyembunyikan fitur apa pun versi yang sedang Anda kembangkan, sangat sederhana!
Jika tautan berubah, dapat ditemukan di bawah dokumentasi android resmi dalam pelatihan -> memulai -> Praktik terbaik untuk antarmuka pengguna -> mengelola sistem ui
https://developer.android.com/training/system-ui/index.html
sumber
Anda bisa menggunakan ini:
getSupportActionBar().hide();
jika tidak berhasil coba yang ini:jika di atas tidak berhasil coba seperti ini:
di direktori Anda = res / values / style.xml, buka style.xml -> ada
parent
perubahan atributparent="Theme.AppCompat.Light.DarkActionBar"
jika semua itu tidak berhasil juga. saya tidak tahu lagi tetapi bagi saya itu berhasil.
sumber