首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实践 | Google IO 应用是如何适配大尺寸屏幕 UI

△ 左图: 平板电脑竖屏模式 (单窗格)。右图: 平板电脑横屏模式 (双窗格)。 我们采用了 SlidingPaneLayout,它为上述问题提供了一个直观解决方案。...我们可以用某窗格 NavController 来管理该窗格内包含各个目的页面,比如会议详情、讲师详情。...上面这些情况都可以在 OnBackPressedCallback 中处理,这个回调在双窗格 Fragment onViewCreated() 方法执行时会被注册 (您可以在这里了解更多关于添加 自定义导航..., private val detailPaneNavController: NavController ) : OnBackPressedCallback(false), SlidingPaneLayout.PanelSlideListener...欢迎您 点击这里 向我们提交反馈,或分享您喜欢内容、发现问题。您反馈对我们非常重要,感谢您支持!

2.1K20

Navigation深入浅出,到出神入化,再到实战改造(二)

了解Navigation使用后,思考几个问题 NavHostFragmnet作为路由容器,是如何解析nav_graph资源文件,从而生成NavGraph对象? 跳转时,路由是如何被执行?...NavController: 外部调用入口,提供路由,回退等核心操作 NavDestination 节点封装类对应nav_graph.xml文件中 , </fragment...NavControllernavigation()会转到它子类,包括NavGraphNavigator,ActivityNavigator,FragmentNavigator,DialogFragmentNavigator...总结如下: NavHostController 这个类没啥实际作用,就是为了和NavHostFragment形式上同样,真正实现都在父类NavController中 想要自定义自己Navigator...就是Mapkey NavHostController 这个类没啥实际作用,就是为了和NavHostFragment形式上同样,真正实现都在父类NavController中 有需求要拦截返回键,做我们想做事情

1.9K40
您找到你想要的搜索结果了吗?
是的
没有找到

Android | Jetpack 处理回退事件新姿势 —— OnBackPressedDispatcher

概述 OnBackPressedDispatcher 解决了什么问题: 在 Activity 里可以通过回调方法 onBackPressed() 处理,而 Fragment / View 却没有直接回调方法...public void addCallback(LifecycleOwner owner, OnBackPressedCallback onBackPressedCallback) 3、判断是否有启用回调...OnBackPressedDispatcher 源码分析 OnBackPressedDispatcher 源码不多,我直接带着问题入手,帮你梳理 OnBackPressedDispatcher 内部实现原理...另外,添加回调 addCallback() 方法也要求在主线程执行,分发器内部使用非并发安全容器 ArrayDeque 存储回调对象。...3.4 OnBackPressedCallback 可以同时添加到不同分发器吗? 答:可以。 3.5 加入返回栈Fragment 事务,如何回退?

1.4K20

java静态内部类和非静态内部区别_静态内部类有什么问题

一、非静态内部类: 1、变量和方法不能声明为静态。(类编译顺序:外部类–静态方法或属性–内部类,如果内部类声明为静态,造成编译顺序冲突。...个人理解) 2、实例化时候需要依附在外部类上面。比如:B是A非静态内部类,实例化B,则:A.B b = new A().new B(); 3、内部类可以引用外部类静态或者非静态属性或者方法。...二、静态内部类: 1、属性和方法可以声明为静态或者非静态。 2、实例化静态内部类:比如:B是A静态内部类,A.B b = new A.B(); 3、内部类只能引用外部类静态属性或者方法。...比如B是A静态内部类,b()是B中一个静态属性,则可以:A.B.b(); 三、关于java静态方法相关总结: 一个类静态方法只能访问静态属性(静态方法是属于类,而普通方法是属于对象。)...”,当然也不能使用”super”; 静态方法不能被非静态方法覆盖; 构造方法不允许声明为 static ; 局部变量不能使用static修饰; 问题:为什么一个类静态方法只能访问静态属性或静态方法

56010

Android-Jetpack笔记-Navigation之Fragment使用

Navigation是一种导航概念,即把Activity和fragment当成一个个目的地Destination,各目的地形成一张导航图NavGraph,由导航控制器NavController来统一调度跳转...和导航控制器 NavigationUI.setupWithNavController(navView, navController); } } 代码大致就这些,接下来看看内部实现...); } }); //在目的地发生切换时候,更新底部导航选中状态,先不看 navController.addOnDestinationChangedListener...ft.replace(mContainerId, frag); //提交事务 ft.commit(); } 这里可以看出一个问题,每次切换目的地,fragment是反复销毁重建,按照谷歌推荐...1个APP只需1个activity思路开发,这样是没问题,但是这里fragment是作为首页3个常驻页面,我们是希望能够保存起来,毕竟,销毁重建需要重新请求网络数据,重新初始化view,严重影响用户体验

1.6K30

2. Jetpack源码解析---Navigation为什么切换Fragment会重绘?

本篇文章主要介绍下我在项目中遇到问题,以及目前关于Navigation实现一些探讨。...但是我在使用时候发现,当一个Fragment中布局稍微复杂一些,切换Fragment时候会顿卡,而且如果再配合DrawrLayout使用的话,还会闪一下屏,效果体验不是很好,本着这个问题,我又再次对...所以…还是看源码吧: 2.1 NavController private void navigate(@NonNull NavDestination node, @Nullable Bundle args...对于这个问题其实根据上面的分析,也能大概想到是因为什么,但是返回按钮操作我之前还真没有看过源码,所以这次顺便了解一下: 3....我还发现一个问题,就是Play商店,现在就是这样情况,抽屉栏中Item每个基本都是重新绘制,而且第一个Item我应用和游戏切换时候就会有很明显的卡顿和闪屏,猜测Google play 商店具体是不是使用

2.2K40

JetPack--Navigation

进行展示 3.NavController:用于在代码中完成Navigation Graph中具体页面切换工作 当想要切换Fragment时,使用NavController对象,指定跳转Navigation...中设置一个点击事件,使用NavController进行fragment跳转,通过内部任意一个View就能获取NavController对象 HomeFragment package com.aruba.navigation...(); } 2.跳转动画 添加Fragment跳转动画比较简单,只需要在NavigationGraph中action添加即可 image.png 3.参数传递 NavController...navigate方法可以传递一个bundle,接受Fragment和以前一样可以用getArguments方法获取: //Activity中绑定后,可以通过内部任意一个View获取NavController...("name", "张三"); //指定跳转fragment,即navigation graph中action navController.navigate(R.id.action_homeFragment_to_detailFragment

57410

java内部作用(一)----解决函数参数返回问题

,就可以用内部类解决这个问题 而如果此时这个作为返回值内部类不需要引用外围类对象的话,就可以加上STATIC  静态内部类  取消产生内部作用 因为内部类对象总有一个隐式引用,它指向了创建它外部对象...当你使用了静态Static来修饰这个内部时候,这个引用将被取消。...也就是有这样一个特性: 静态内部对象除了没有对生成它外围类对象引用特权外,与其他所有内部类完全一样 接下来我们看看java技术核心提供代码: 内部类: package org.innerclass.operate...,因为外部类对象是在静态方法中构造这个内部对象。...如果没有static,表示这个内部类是静态内部类,那么编译器将会给出错误报告: 没有可用隐式ArrayAlg类型对象初始化内部类对象

1.5K20

安卓Navigation系列——进阶篇

系列——进阶篇 作者 大家好,我叫小琪; 本人16年毕业于中南林业科技大学软件工程专业,毕业后在教育行业做安卓开发,后来于19年10月加入37手游安卓团队; 目前主要负责国内发行安卓相关开发,同时兼顾内部几款...成员变量,mNavController就是前篇文章中提到管理导航navController对象,只不过它是继承自NavController,戳进去构造方法,发现调用了父类构造方法,再戳进去来到了...,也就是一个个页面,NavGraph内部有个集合mNodes,用来保存一组NavDestination。...至此我们具体分析了两个重要步骤,一个是navigator,一个是nav_graph.xml是如何被解析并关联到navController,弄清楚这两个步骤,对接下来分析大有帮助。...有个mNavController成员变量,它是一个NavController对象,最终页面导航都是通过调用它navigate方法实现 mNavController内部通过NavigatorProvider

2.9K30

内部系统界面设计【上】 | 问题与挑战

本篇文章中,码匠将带您深入探讨内部系统 UI 设计,具体我们会介绍内部系统界面设计以及它所面临挑战。企业内部系统界面设计有何不同首先,让我们看一下有效内部系统界面在公司环境中扮演角色。...你可能想问,to C 软件界面与交互设计也要考虑这些,那它们与 to B 内部系统相比,在界面设计上有何不同?一个区别是,内部系统主要用于满足公司组织需求而不是单个用户需求。...图片内部系统界面设计所面临挑战从设计角度来看,企业工具设计会面临很多不一样挑战,设计团队需要应对在其他组织中不太常见额外限制和痛点。以下是内部系统 UI 设计中会出现 6 个关键问题。...复杂性在内部系统中,业务流程通常更加繁复与多变,这使得界面与交互设计变得非常复杂,如多数据状态、指标可视化、权限、多用户协作以及其他工具集成等,内部系统复杂度通常高于其他应用程序。...图片安全性无论是在处理复杂合规标准层面上,还是避免成为黑客和网络犯罪分子攻击目标的问题上,内部系统往往有更高安全需求。

1.1K10

【Linux技巧1】nsenter命令解决容器内部命令不足问题

1.1 nsenter介绍 1.1.1 命令介绍 在docker中,为了尽可能缩减镜像大小,常常不会包含一些常用工具,类似ping,curl,tcpdump等,虽然精简了镜像,但如果我们需要在容器内部测试网络联通性时...其实容器内部和主机之间网络环境是互相隔离,处于独立命名空间下,那如果能在主机上切换命名空间,就可以在主机上以容器网络环境进行操作,就可以利用主机上工具,利用这个思想,我们就能够实现不用进入容器内部也可以实现容器内部一样环境...很多时候我们需要知道容器内部解析域名ip信息,如果没有这些工具,本来很简单事就变得很麻烦,通过以下步骤就可以通过nsenter解决以上问题 1.1.2 使用方法 第一步获取容器PID // 方法一...State.Pid}}' 23069 第二步使用命令nsenter 进入空间 // 根据id进入空间 [root@VM-4 ~]# nsenter -n -t23069 // 这个时候我们就已经有了容器内部环境...,这里pid=23069容器ip是10.0.0.2,可以看到已经打印出来了。

2.4K00

compose--附带效应、传统项目集成、导航

) { Text("执行了${count}次") } } 效果: 3.rememberUpdatedState LaunchedEffect一旦启动,同一个key其内部方法调用和引用都是...,所以此时无论外部变量引用发生如何改变,并不会改变LaunchedEffect内部变量引用 rememberUpdatedState在remember基础上做了更新值处理,每次调用到rememberUpdatedState...时,将值更新,也就是引用更新,此时不管外部变量还是LaunchedEffect内部变量值引用都会发生变化,LaunchedEffect调用自然就是最新方法了,下面是rememberUpdatedState...接下来使用navController来导航到不同可组合项,下面是官方给出示例几种方式: 在导航到“friendslist”并加到返回堆栈中 navController.navigate("friendslist...("home") { inclusive = true } } 只有当我们还不在“search”时,才能导航到“search”目标地,避免在后堆栈顶部有多个副本 navController.navigate

2.2K40
领券