zoukankan      html  css  js  c++  java
  • Android Navigation 架构组件入门教程

    Android Navigation 架构组件入门教程

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

    转载请表明出处:https://www.cnblogs.com/cavalier-/p/10429936.html

    前言

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

    教程下载

    教程github

    你需要知道

    关于Navigation你需要知道如下三个组件

    这是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>
    

    每个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是一个跟踪Navigation graph当前位置的对象,主要协调NavHostFragment显示对应的Fragment,可通过NavController控制跳转逻辑,安全传参(SafeArgs后面讲解)

    SafeArgs

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

    实践过程

    1. 使用AndroidStudio 3.2以上版本
    2. 在AndroidStudio 中导入教程下载的实验项目,此过程等待时间长短依据你当前的网络环境
    3. 打开appsrcmain es avigation av_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文档

  • 相关阅读:
    Database
    模式匹配
    About Unicode
    Dive into python学习笔记
    Python基本概念及零碎知识点
    Djnago的一些零碎知识点
    python项目练习3:万能的XML
    Django的第一个web程序及深入学习
    Poj1195&tyvj1474二维线段树
    zoj2319Beautiful People Dp
  • 原文地址:https://www.cnblogs.com/cavalier-/p/10429936.html
Copyright © 2011-2022 走看看