Bagaimana cara Facebook membuat Kepala Obrolan di Android? Apa API untuk membuat tampilan mengambang di atas semua tampilan lainnya?
android
facebook
android-windowmanager
Daniel A. White
sumber
sumber
Jawaban:
Ini :
// EDIT: Kode lengkap di sini :
Jangan lupa untuk memulai layanan entah bagaimana:
.. Dan tambahkan layanan ini ke Manifest Anda.
sumber
Sebagai aturan, kegiatan Android adalah layar penuh, UI berdedikasi konseptual yang mengambil semua interaksi. Ada beberapa pengecualian untuk ini. Sebagai permulaan, ada dialog sembulan yang tidak memenuhi layar. Lainnya adalah roti bakar Android, yang merupakan sembulan non-interaktif - Anda tidak dapat menyentuhnya, dan jika Anda mencobanya akan menuju ke apa pun yang ada di bawahnya.
Anda juga dapat melakukan UI khusus Anda sendiri. Anda dapat menambahkan tampilan langsung ke
WindowManager
, menentukan jenis bendera. Kepala Obrolan mungkin menggunakan TYPE_PHONE . Ada beberapa tipe yang serupa, tetapi tujuannya sama: overlay tujuan khusus yang dapat muncul di atas hal lain tanpa aplikasi induk tampaknya ada.Itu hanya membuat Anda sejauh ini, karena masalah dengan interaksi. Pada awalnya, hamparan Anda akan menyerap semua interaksi, sehingga tidak hanya kepala mendapatkan acara, tetapi Anda memblokir interaksi dengan semua yang ada di bawahnya.
Anda mengonfigurasi perilaku ini menggunakan LayoutParams .
FLAG_NOT_TOUCH_MODAL
berarti bahwa acara di luar area tampilan Anda pergi ke UI yang mendasarinya. Anda sekarang akan menemukannya berfungsi, tetapi hal-hal buruk lainnya masih terjadi, seperti tombol kembali / menu tidak diarahkan ke aplikasi, plus tidak ada keyboard. Untuk mengatasi itu Anda perluFLAG_NOT_FOCUSABLE
.Anda juga mendapatkan efek samping dari bit yang tidak dapat difokuskan, yang tidak lagi merupakan interaksi yang baik dengan overlay Anda, misalnya penekanan tombol. Anda bisa mendapatkan beberapa acara sentuh dasar, yang selalu bisa Anda hitung, dan itu mungkin cukup untuk Kepala Obrolan. Perlu diketahui bahwa ini membuat Anda sendirian di banyak area, seperti animasi UI.
Tinjauan umum detail yang baik, termasuk memungkinkan untuk interaksi interaksi selektif, dapat ditemukan di utas StackOverflow ini . Secara khusus, salah satu tautan jawaban pada akhirnya akan membawa Anda sini , yang merupakan contoh proyek yang bagus. Perhatikan bahwa ICS mengubah cara kerjanya sedikit, tetapi utas menjelaskannya.
Ini semua hal-hal API publik, tetapi itu tidak benar-benar tampak seperti hal umum yang harus dilakukan sebagai hal yang biasa. Dokumentasi dipenuhi dengan referensi untuk perilaku aplikasi sistem khusus, dan dengan alasan yang bagus; bagaimana jika semua orang melakukannya?
sumber
Kepala Springy memberikan perilaku berbasis pegas dari kepala obrolan di luar kotak. Yang harus Anda tentukan adalah drawable untuk kepala obrolan dan fragmen untuk membuka setelah kepala obrolan diklik. Kepala obrolan runtuh saat diminimalkan dan ikuti jari saat diseret.
Proyek ini mencakup aplikasi demo yang menunjukkan semua fungsionalitas bawaan. Untuk menggunakannya, Anda perlu menambahkan ini ke dependensi gradle Anda.
sumber