Android Navigation 架构组件入门教程

Android Navigation 架构组件入门教程

版权声明:本文为博主原创文章,未经博主容许不得转载。html

转载请代表出处:http://www.javashuo.com/article/p-cbzjqeaz-hb.htmlandroid

前言

Navigation组件是AndroidStudio3.2版本更新带来的新组件,其特色是在一个Activity中使用多个Fragment处理平滑用户操做,且能够统一进场,退场,弹出,隐藏动画,可视化处理Action,支持深层连接(不在同一个Activity时能够弹出跳转,底层是BroadcastReceiver),支持以少许代码链接底部导航或者链接ActionBar菜单或者链接Drawlayout的MenuItem,且导航时提供了类型安全(SafeArgs)。好处说了那么多,下面我们来看看具体如何使用吧!git

教程下载

教程githubgithub

你须要知道

关于Navigation你须要知道以下三个组件设计模式

Navigation graph

这是Navigation的导航图,位于res/navigation/目录下的xml文件, 其有两个模式,Design(可视化设计模式)和Text(文字模式),在Design可视化环境下能够对整个Navigation作新建等操做,在Text模式下可进行代码声明,以下所示:安全

<fragment
        android:id="@+id/home_dest"
        android:name="com.example.android.codelabs.navigation.HomeFragment"
        android:label="@string/home"
        tools:layout="@layout/home_fragment">
        <action
            android:id="@+id/next_action"
            app:destination="@+id/flow_step_one_dest"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"
            app:popEnterAnim="@anim/slide_in_left"
            app:popExitAnim="@anim/slide_out_right" />
</fragment>

NavHostFragment

每一个Navigation图都有一个起始的Fragment,这个Fragment将做为栈底(压栈,相似Activity的启动栈),其在布局文件中以下声明:网络

<fragment
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/my_nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    app:navGraph="@navigation/nav_graph"
    app:defaultNavHost="true"
        />
  • 这里面你们重点关注android:nameapp:defaultNavHost="true"是声明启动的Fragment为NavHostFragment
  • 下面的app:navGraph是将此fragment与Navigation graph作关联

NavController

NavController是一个跟踪Navigation graph当前位置的对象,主要协调NavHostFragment显示对应的Fragment,可经过NavController控制跳转逻辑,安全传参(SafeArgs后面讲解)架构

SafeArgs

使用SafeArgs须要导入Gradle插件(详情看注意事项第4点),在传值类型会自动生成对应类型的class,因此官方推介使用SafeArgs进行传参app

实践过程

  1. 使用AndroidStudio 3.2以上版本
  2. 在AndroidStudio 中导入教程下载的实验项目,此过程等待时间长短依据你当前的网络环境
  3. 打开app\src\main\res\navigation\nav_graph文件(此文件就是上面提到的Navigation graph)
  4. 切换页面内,下面的编辑模式到Design模式,在里面找到一个绿色的+号New Destination,在弹出的窗口内选择SettingFragment,恭喜你目前已经掌握添加一个Fragment到Navigation Edit
  5. 接下来我们切换到MainFragment,在onCreateView中加入NavController navController = NavHostFragment.findNavController(MainFragment.this); navController.navigate(R.id.twoFragment);,这段代码意味着我们从前面认识到的NavHostFragment中找到NavController,后面经过获得的NavController导航到ID叫R.id.twoFragment的目标
  6. 接下来我们切换到TwoFragment,在onCreateView中加入NavController navController = NavHostFragment.findNavController(TwoFragment.this); navController.navigate(R.id.mainFragment);,这段代码意味着我们从前面认识到的NavHostFragment中找到NavController,后面经过获得的NavController导航到ID叫R.id.mainFragment的目标
  7. 运行项目
  8. 至此你已经初步掌握了Navigation的入门用法!

注意事项

  1. 运行环境必须是Android Studio3.2以上
  2. 最低运行在API14设备以上

引用

Navigation文档ide

原文出处:https://www.cnblogs.com/cavalier-/p/10429936.html

相关文章
相关标签/搜索