初识Navigation(导航)

news/2024/12/2 18:35:07/

初识JetPack之——Navigation(导航)

  • 关于Navigation
    • Navigation详解
      • Navigation涉及的概念:
    • 界面讲解

本文为学习类文档,通过学习B站up主longway777的视频,如有侵权,请联系博主进行删除

关于Navigation

Navigation导航是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对。导航组件还通过遵循一套既定原则来确保一致且可预测的用户体验。
简言之就是:对界面切换繁杂的应用程序使用导航实现简易化操作。

Navigation详解

Navigation导航组件由以下三个关键部分组成:

导航图Navigation graph:在一个集中位置包含所有导航相关信息的 XML 资源。这包括应用内所有单个内容区域(称为目标)以及用户可以通过应用获取的可能路径。
NavHost:显示导航图中目标的空白容器。导航组件包含一个默认 NavHost 实现 (NavHostFragment),可显示 Fragment 目标。
NavController:在 NavHost 中管理应用导航的对象。当用户在整个应用中移动时,NavController 会安排 NavHost 中目标内容的交换。
在应用中导航时,您告诉 NavController,您想沿导航图中的特定路径导航至特定目标,或直接导航至特定目标。NavController 便会在 NavHost 中显示相应目标。

导航组件提供各种其他优势,包括以下内容:

处理 Fragment 事务。
默认情况下,正确处理往返操作。
为动画和转换提供标准化资源。
实现和处理深层链接。
包括导航界面模式(例如抽屉式导航栏和底部导航),用户只需完成极少的额外工作。
Safe Args - 可在目标之间导航和传递数据时提供类型安全的 Gradle 插件。
ViewModel 支持 - 您可以将 ViewModel 的范围限定为导航图,以在图表的目标之间共享与界面相关的数据。
此外,您还可以使用 Android Studio 的 Navigation Editor 来查看和编辑导航图。

注意:如果要使用导航和 Android Studio,则必须使用 Android Studio 3.3 或更高版本。

Navigation涉及的概念:

NavHost:显示导航图中目标的空白容器。也是一个controller
在这里插入图片描述
Fragement:将屏幕分割处理的每个部分。依存于Activity伴随创建并附加。等同于栈的出栈与入栈
NavController:管理界面逻辑的切换,根据定义的路线做逻辑切换
NavGraph:设置导航的工具,有图形化工具。

界面讲解

实现一个项目,含有两个界面,点击一个界面上的按钮实现跳转界面操作。手机自带的back键或者左上角设置的返回按键实现界面的返回操作。(如今很多手机由于全面屏功能(学习的ios = =)不带返回的物理按键,所以在项目中多设置几个back是好习惯!)

  1. 创建HomeFragement和DetailFragement:在包名处右键new一个Fragement(Blank),如下:在这里插入图片描述
  2. 创建NavGraph资源文件,res->new resources file
    在这里插入图片描述
    出现提示添加依赖,选择ok并等待完成即可出现图形化导航界面
    在这里插入图片描述
    在这里插入图片描述
    导入刚创建的两个Fragement(带有start的为导航初始化界面,可右键更改,如下图)
    在这里插入图片描述
  3. 对fragement进行连线:在这里插入图片描述
  4. 添加NavHost:在主界面选择NavHostFragement拖动在主界面.xml中:在这里插入图片描述
  5. 创建点击事件即可完成生命活动:
    HomeFragment.java中:
    @Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) { //放在此callback中更合适super.onActivityCreated(savedInstanceState);Button button;button = getView().findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {NavController controller = Navigation.findNavController(v);//找到button归属的controllercontroller.navigate(R.id.action_homeFragment_to_detailFragment);}});

DetailFragment.jaja

    @Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);getView().findViewById(R.id.button2).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_detailFragment_to_homeFragment));//简便写法,完成切回界面}
  1. 创建淡出淡入切换动画(根据喜好选择,记住与进出对应!):在这里插入图片描述
  2. 运行:在这里插入图片描述
    按下按钮实现切换界面在这里插入图片描述
    再次按下实现界面切回
  3. 左上角返回按键代码以及Fragement界面切换的命名更改设计:
    在MainActivity.java中填写对应信息:
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.NavigationUI;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);NavController controller = Navigation.findNavController(this,R.id.fragment);NavigationUI.setupActionBarWithNavController(this,controller);//命名更改结束}//返回的按键设置@Overridepublic boolean onSupportNavigateUp() {NavController controller = Navigation.findNavController(this,R.id.fragment);return controller.navigateUp();//return super.onSupportNavigateUp();//返回父类}
}

在这里插入图片描述
9. 最终实现图,:
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/281809.html

相关文章

Navigation: 导航到目的地

导航到目的地是使用 NavController 完成的,它是一个在 NavHost 中管理应用导航的对象。每个 NavHost 均有自己的相应 NavController。 NavController 提供了几种导航到目的地的不同方式: Kotlin: Fragment.findNavController()View.findNavCo…

星际导航

题目描述 \text{sideman}sideman 做好了回到 \text{Gliese}Gliese 星球的硬件准备,但是 \text{sideman}sideman 的导航系统还没有完全设计好。为了方便起见,我们可以认为宇宙是一张有 NN 个顶点和 MM 条边的带权无向图,顶点表示各个星系&…

导航和路径规划

导航技术前言: 导航技术的移动机器人技术的核心和关键技术。自主移动机器人的导航就是让机器人可以自主按照内部预定的信息,或者依据传感器获取外部环境进行相应的引导,从而规划出一条适合机器人在环境中行走的路径。定位,就是机…

无人导航常见坐标系

文章目录 1. 大地坐标系,WGS84(WorldGeodeticCoordinateSystem1984)2. 地心地固定坐标系,ECEF(Earth-Centered Earth-Fixed,符号e)3. 大地中心惯性系,ECI(Earth-centered…

导航寻路教程

文章目录 思维导图寻路场景搭建导航面板动态障碍物(NavMesh Obstacle)分离网格跳跃线(Off-Mesh Link)NavMeshComponent预制体内生成导航网格,且网格跟随预制体NavMeshLink 思维导图 寻路场景搭建 都是Cube搭建,每个Cube都有盒装碰…

navigation导航栈

navigation功能包: navigation 栈下的各个功能包的作用: acml:是一个针对在二维移动的机器人的基于概率定位系统。它实现了自适应蒙特卡罗滤波的定位方法,并使用粒子滤波器去跟踪在已知地图中机器人的位置。 base_local_planner: 完成局部窗口内的路径规划任务,机…

导航寻路

源码 地址 http://download.csdn.net/download/u012419410/9037849 NAV导航网格寻路(1)-- 介绍 2010-04-02 13:23:21| 分类: 游戏 | 标签:寻路 nav navigation mesh 导航网格 游戏 |举报|字号 订阅 竹石 http://blianc…

Navigation导航系统

Navigation导航系统 ##1、Unity导航系统 1.1、导航 导航在游戏中的概念就是从一点走到另外一点的过程,在该过程中需要考虑:阻挡,路径选择,可走地形,地形特点以及拟人化等多方面因素。 在游戏当中导航分为两种&…