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()

results matching ""

    No results matching ""