Pengguna dapat keluar dari aktivitas Wear OS dengan menggeser dari kiri ke kanan. Jika aplikasi memiliki scrolling horizontal (misalnya, jenis scrolling yang tersedia di aplikasi yang berisi peta), pengguna akan keluar dengan menavigasi ke tepi konten, lalu menggeser dari kiri ke kanan.
Menekan tombol daya akan mengembalikan pengguna ke tampilan jam.
Lihat referensi terkait berikut:
Gestur geser untuk menutup
Pengguna menggeser dari kiri ke kanan untuk menutup layar saat ini. Oleh karena itu, direkomendasikan agar Anda menggunakan hal berikut:
Direkomendasikan juga agar aplikasi Anda tidak berisi gestur geser horizontal.
Penutupan aktivitas
Aktivitas secara otomatis mendukung geser untuk menutup. Menggeser aktivitas dari kiri ke kanan akan menutup aktivitas, dan aplikasi akan menuju ke back-stack.
Fragmen
Anda dapat menggabungkan tampilan berisi fragmen ke dalam class SwipeDismissFrameLayout
seperti 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: Class
SwipeDismissFrameLayout
menggantikan class serupa
yang tidak digunakan lagi di Support Library Wearable.
Tampilan yang dapat di-scroll secara horizontal
Pada beberapa kondisi, seperti dalam tampilan berisi peta yang mendukung penggeseran, antarmuka pengguna tidak akan mencegah penggeseran horizontal. Dalam skenario ini, terdapat dua pilihan:
- Jika back-stack pendek, pengguna dapat menutup aplikasi dan kembali ke layar utama (tampilan jam) dengan menekan tombol daya.
- Jika ingin pengguna menelusuri data sebelumnya, Anda dapat menggabungkan tampilan dalam objek
SwipeDismissFrameLayout
, yang mendukung geser tepi. Geser tepi diaktifkan saat tampilan atau turunannya menghasilkantrue
dari a panggilancanScrollHorizontally()
. Geser tepi memungkinkan pengguna menutup tampilan dengan menggeser dari sisi paling kiri layar (saat ini disetel ke 10% lebar layar) dan bukan di mana pun dalam tampilan.
Untuk menggabungkan tampilan dalam objek SwipeDismissFrameLayout
SwipeDismissFrameLayout, tinjau
contoh berikut:
XML untuk file tata letak
<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>
Cuplikan kode
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); } } );
Umumnya tidak direkomendasikan: Menonaktifkan geser untuk menutup
Menonaktifkan geser untuk menutup umumnya tidak direkomendasikan karena pengguna
menginginkan menutup setiap layar dengan sekali geser. Dalam kasus khusus, Anda dapat memperluas tema default (di
resource gaya) dan menetapkan atribut android:windowSwipeToDismiss
ke false
:
<resources> <style name="AppTheme" parent="@android:style/Theme.DeviceDefault"> <item name="android:windowSwipeToDismiss">false</item> </style> </resources>
Anda kemudian dapat memberi tahu pengguna (ketika pertama kali menggunakan aplikasi Anda) bahwa mereka dapat keluar dari aplikasi dengan menekan tombol daya.
Perilaku penutupan sebelum Wear 2.0
Sebelum Wear 2.0, class
DismissOverlayView
digunakan untuk mengimplementasikan tekan lama bagi pengguna untuk menutup aplikasi. Class DismissOverlayView
seharusnya tidak digunakan lagi.
Selain itu, tekan lama untuk menutup aplikasi tidak lagi disarankan. Jangan mengimplementasikan tekan lama untuk menutup aktivitas layar penuh (penggeseran atau aktivitas imersif seperti Google Maps).
Penutupan melalui tombol power
Menekan tombol power (tombol fisik) akan mengirimkan peristiwa tombol power. Oleh karena itu, Anda tidak dapat menggunakan tombol power sebagai tombol kembali atau navigasi secara umum.
Ketika ditekan, tombol power akan mengembalikan pengguna ke layar utama (tampilan jam). Ada dua pengecualian:
- Jika pengguna adalah IME (Editor Metode Masukan, misalnya, layar pengenalan tulisan), menekan tombol tersebut akan menutup IME dan mengembalikan pengguna ke aplikasi.
- Jika pengguna berada pada tampilan jam, menekan tombol fisik akan membuka peluncur aplikasi.
Perhatikan bahwa saat tombol daya ditekan, metode
isFinishing()
dari class Activity
tidak menampilkan true
(Anda juga tidak dapat menghalangi peristiwa kunci).