רכיב הניווט ב-Android Jetpack מספק תמיכה באפליקציות של Jetpack פיתוח נייטיב. אפשר לעבור בין תכנים קומפוזביליים תוך שימוש בתשתית ובתכונות של רכיב הניווט.
בדף הזה מתוארים ההבדלים ביחס ל-Jetpack Navigation ב-Compose ל-Wear OS.
הגדרה
משתמשים ביחס התלות הבא בקובץ build.gradle של מודול האפליקציה:
Kotlin
dependencies { def wear_compose_version = "1.4.0" implementation "androidx.wear.compose:compose-navigation:$wear_compose_version" }
משתמשים בו במקום הארטיפקט androidx.navigation:navigation-compose
כי הוא מספק הטמעות חלופיות שספציפיות ל-Wear OS.
יצירת רכיבי ניווט, מארח וגרף
כדי לנווט באמצעות Compose ל-Wear OS, נדרשים אותם שלושה רכיבים שנדרשים באפליקציות שאינן ל-Wear OS: רכיב הבקרה של הניווט, המארח והתרשים.
משתמשים ב-rememberSwipeDismissableNavController()
כדי ליצור מופע של WearNavigator
, הטמעה של NavController
שמתאימה לאפליקציות ל-Wear OS:
Kotlin
val navController = rememberSwipeDismissableNavController()
NavController
הוא ה-API הראשי שמשמש לניווט באפליקציות Compose. הוא מאפשר לנווט בין רכיבי ה-Composable במארח הניווט, שב-Wear OS הוא SwipeDismissableNavHost
.
Kotlin
val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { // TODO: build navigation graph }
בדומה ל-NavHost
composable, הוא מקבל הפניה למסוף הניווט, למסלול ליעד ההתחלה ול-builder של תרשים הניווט, שמוצג כאן כ-lambda נגרר.
צריך לספק את יעד ההתחלה ב-Navigation Graph Builder, יחד עם כל יעדי היעד האחרים שצריך לאפשר ניווט אליהם באמצעות Navigation Controller.
באפליקציה ל-Wear OS, מגדירים את SwipeDismissableNavHost
בתור תוכן של Scaffold
כדי לתמוך ברכיבים ברמה העליונה, כמו שעון, אינדיקטור גלילה/מיקום ואינדיקטור דף.
כדי להוסיף אובייקט TimeText
למסך כברירת מחדל ולוודא שהאנימציה שלו פועלת כמו שצריך כשמנווטים בין המסכים, אפשר להשתמש באובייקט Horologist AppScaffold
מעל SwipeDismissableNavHost
וב-Horologist ScreenScaffold
ברמת המסך.
בנוסף, ScreenScaffold
מוסיף PositionIndicator
לתוכן שאפשר לגלול בו.
AppScaffold { val navController = rememberSwipeDismissableNavController() SwipeDismissableNavHost( navController = navController, startDestination = "message_list" ) { composable("message_list") { MessageList(onMessageClick = { id -> navController.navigate("message_detail/$id") }) } composable("message_detail/{id}") { MessageDetail(id = it.arguments?.getString("id")!!) } } } // ... // .. Screen level content goes here val scrollState = rememberScrollState() ScreenScaffold(scrollState = scrollState) { // Screen content goes here
למידע נוסף על ניווט ב-Jetpack פיתוח נייטיב, אפשר לעיין במאמר ניווט באמצעות Compose או להשתתף בסדנת הקוד בנושא ניווט ב-Jetpack פיתוח נייטיב.
מומלץ עבורך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- העברת Jetpack Navigation ל-Navigation Compose
- ניווט באמצעות Compose
- ניווט בין המסכים באמצעות 'כתיבה'