AnimationNavgation
首先確認匯入的package是對的
1
2
var navigation_animation_version = "0.31.3-beta"
implementation "com.google.accompanist:accompanist-navigation-animation:$navigation_animation_version"
匯入的composable是com.google.accompanist.navigation.animation
其它的AnimatedNavHost/rememberAnimatedNavController也要檢查import的路徑是對的
1
2
3
import com.google.accompanist.navigation.animation.composable
import com.google.accompanist.navigation.animation.AnimatedNavHost
import com.google.accompanist.navigation.animation.rememberAnimatedNavController
NavHostApp()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.example.project1.ui.components
import android.util.Log
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.runtime.Composable
import com.example.project1.ui.navigation.Destinations
import com.example.project1.ui.screens.ArticleDetailScreen
import com.google.accompanist.navigation.animation.composable
import com.google.accompanist.navigation.animation.AnimatedNavHost
import com.google.accompanist.navigation.animation.rememberAnimatedNavController
import com.example.project1.ui.screens.MainFrame
/**
* 導航控制器
*/
@OptIn(ExperimentalAnimationApi::class)
@Composable
fun NavHostApp() {
val navController = rememberAnimatedNavController()
AnimatedNavHost(
navController = navController,
startDestination = Destinations.HomeFrame.route
) {
//HomeFrame作為起始頁
composable(Destinations.HomeFrame.route){
Log.d("xxxx","here1")
MainFrame(onNavigateToArticle = {
Log.d("xxxx","here3")
navController.navigate(Destinations.ArticleDetail.route)
})
}
//文章詳細頁
composable(Destinations.ArticleDetail.route) {
ArticleDetailScreen()
}
}
}
其中startDestination指的是預設最開始的頁面
1
2
3
4
AnimatedNavHost(
navController = navController,
startDestination = Destinations.HomeFrame.route
)
建立HomeFrame是那個函式處理的
1
2
3
4
5
composable(Destinations.HomeFrame.route){
MainFrame(onNavigateToArticle = {
navController.navigate(Destinations.ArticleDetail.route)
})
}
要在MainActivity呼叫
1
NavHostApp()