Pengguna dapat keluar dari aktivitas Wear OS dengan menggeser dari kiri ke kanan. Jika aplikasi memiliki scroll horizontal, pengguna akan keluar dengan menavigasi ke tepi lalu menggeser dari kiri ke kanan. Menekan tombol daya juga akan mengembalikan pengguna ke tampilan jam.
Gestur geser untuk menutup
Pengguna menggeser dari kiri ke kanan untuk menutup layar saat ini. Oleh karena itu, kami sebaiknya gunakan:
- Tata letak vertikal
- Penampung konten
Sebaiknya aplikasi Anda juga tidak berisi gerakan menggeser horizontal.
Menutup aktivitas
Aktivitas otomatis mendukung geser untuk menutup. Menggeser aktivitas dari kiri ke kanan menyebabkan penutupan aktivitas, dan aplikasi menavigasi ke bawah data sebelumnya.
Menutup fragmen
Untuk mendukung geser untuk menutup dalam fragmen, Anda harus menggabungkan
tampilan yang berisi fragmen di
Class SwipeDismissFrameLayout
. Pertimbangkan hal ini
saat memutuskan apakah akan menggunakan fragmen. Gunakan
SwipeDismissFrameLayout
seperti yang ditunjukkan dalam contoh berikut:
Kotlin
class SwipeDismissFragment : Fragment() { private val callback = object : SwipeDismissFrameLayout.Callback() { override fun onSwipeStarted(layout: SwipeDismissFrameLayout) { // Optional } override fun onSwipeCanceled(layout: SwipeDismissFrameLayout) { // Optional } override fun onDismissed(layout: SwipeDismissFrameLayout) { // Code here for custom behavior, such as going up the // back stack and destroying the fragment but staying in the app. } } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View = SwipeDismissFrameLayout(activity).apply { // If the fragment should fill the screen (optional), then in the layout file, // in the androidx.wear.widget.SwipeDismissFrameLayout element, // set the android:layout_width and android:layout_height attributes // to "match_parent". inflater.inflate( R.layout.swipe_dismiss_frame_layout, this, false ).also { inflatedView -> addView(inflatedView) } addCallback(callback) } }
Java
public class SwipeDismissFragment extends Fragment { private final Callback callback = new Callback() { @Override public void onSwipeStart() { // Optional } @Override public void onSwipeCancelled() { // Optional } @Override public void onDismissed(SwipeDismissFrameLayout layout) { // Code here for custom behavior, such as going up the // back stack and destroying the fragment but staying in the app. } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { SwipeDismissFrameLayout swipeLayout = new SwipeDismissFrameLayout(getActivity()); // If the fragment should fill the screen (optional), then in the layout file, // in the androidx.wear.widget.SwipeDismissFrameLayout element, // set the android:layout_width and android:layout_height attributes // to "match_parent". View inflatedView = inflater.inflate(R.layout.swipe_dismiss_frame_layout, swipeLayout, false); swipeLayout.addView(inflatedView); swipeLayout.addCallback(callback); return swipeLayout; } }
Catatan: Jika Anda menggunakan fragmen dalam aktivitas, gunakan
FragmentManager.add
bukannya
FragmentManager.replace
untuk mendukung gestur geser untuk menutup.
Hal ini membantu memastikan bahwa fragmen sebelumnya dirender di bawah fragmen atas saat fragmen
digeser.
Tampilan yang dapat di-scroll horizontal
Dalam beberapa kasus, seperti dalam tampilan berisi peta yang mendukung penggeseran, antarmuka pengguna tidak dapat mencegah geser horizontal. Di sini ini, ada dua pilihan:
- Jika data sebelumnya singkat, pengguna dapat menutup aplikasi dan kembali ke layar utama tampilan jam dengan menekan tombol daya.
- Jika Anda ingin pengguna melihat data sebelumnya, Anda dapat menggabungkan tampilan
dalam objek
SwipeDismissFrameLayout
, yang mendukung edge geser. Geser dari tepi diaktifkan saat tampilan atau turunannya kembalitrue
daricanScrollHorizontally()
. Geser dari tepi memungkinkan pengguna menutup tampilan dengan menggeser dari 10% layar paling kiri, bukan di mana pun dalam tampilan.
Contoh berikut menunjukkan cara menggabungkan tampilan dalam elemen
Objek SwipeDismissFrameLayout
:
<androidx.wear.widget.SwipeDismissFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/swipe_dismiss_root" > <TextView android:id="@+id/test_content" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Swipe me to dismiss me." /> </androidx.wear.widget.SwipeDismissFrameLayout>
Kotlin
activity?.findViewById<SwipeDismissFrameLayout>(R.id.swipe_dismiss_root)?.apply { addCallback(object : SwipeDismissFrameLayout.Callback() { override fun onDismissed(layout: SwipeDismissFrameLayout) { layout.visibility = View.GONE } }) }
Java
SwipeDismissFrameLayout testLayout = (SwipeDismissFrameLayout) activity.findViewById(R.id.swipe_dismiss_root); testLayout.addCallback(new SwipeDismissFrameLayout.Callback() { @Override public void onDismissed(SwipeDismissFrameLayout layout) { layout.setVisibility(View.GONE); } } );
Tidak direkomendasikan: Menonaktifkan geser untuk menutup
Biasanya kami tidak merekomendasikan penonaktifan geser untuk menutup, karena pengguna
mengharapkan untuk menutup layar apa pun dengan menggeser. Dalam kasus yang jarang terjadi,
Anda dapat memperluas tema default
dalam
resource gaya
dan setel atribut android:windowSwipeToDismiss
ke false
, seperti yang ditunjukkan dalam contoh kode berikut:
<resources> <style name="AppTheme" parent="@android:style/Theme.DeviceDefault"> <item name="android:windowSwipeToDismiss">false</item> </style> </resources>
Anda kemudian dapat memberi tahu pengguna tentang penggunaan pertama aplikasi Anda mereka dapat keluar dari aplikasi dengan menekan tombol daya.
Menutup dengan tombol daya
Menekan tombol daya fisik akan mengirim tombol daya peristiwa. Oleh karena itu, Anda tidak dapat menggunakan tombol daya sebagai tombol kembali tombol atau untuk navigasi secara umum.
Saat ditekan, tombol daya akan mengembalikan pengguna ke layar utama tampilan jam. Ada dua pengecualian:
- Jika pengguna menggunakan Editor Metode Input (IME), seperti tulisan tangan layar pengenalan, menekan tombol menutup IME dan mengembalikan pengguna ke aplikasi.
- Jika pengguna berada di tampilan jam, menekan tombol hardware membuka peluncur aplikasi.
Perhatikan bahwa saat tombol daya ditekan,
Metode
isFinishing()
dari class Activity
melakukan
tidak mengembalikan true
, dan Anda tidak dapat menangkap peristiwa tombol.
Untuk informasi selengkapnya, lihat Navigasi.