首页
学习
活动
专区
圈层
工具
发布

WindowsInsets 和 Fragment 过渡动画

那么为什么会这样呢?其实当你在使用 fragment 过渡动画时,退出(Fragment A)和进入(Fragment B)的内容视图实际上经历了以下几个过程: 过渡动画开始。...因为我们对 Fragment A 使用了一个退出的过渡动画,所以 View A 还留在原来的位置,过渡动画在上面运行。 View B 被添加到内容视图里面,并且被立即设置成不可见。...View B 被设置成可见的。 当 Fragment A 的退出动画结束的时候,View A 从容器视图中移除。 这一切听起来都很好,那为什么会突然影响到 WindowInsets 的效果呢?...可是只有其中的一个视图会收到 WindowInsets:也就是第一个子 view。...因为我们对 Fragment A 使用了一个退出的过渡动画,所以 View A 还留在原来的位置,过渡动画在上面运行。 View B 被添加到内容视图里面,并且被立即设置成不可见。

1.2K30

浅析 JetPack Compose 是如何安装到View视图上

我们打开 Filpper 看一下: 显然 R.id.content 下只有一个 ComposeView ,然后内部包含了一个 AndroidComposeView ,我们上述中的 Box 最终都被解析并安装到了这个自定义...因为人家只有两层啊,即业务代码中,ComposeView 下就只有一个 AndroidComposeView ,而其他 Image,Box 等组件都是人家自己绘制的。...你说相比 传统View 还会存在层级问题吗 一些猜测: 为什么叫 AndroidComposeView 呢?...{ parentContext = parent } setContent 设置 compose UI 内容,当视图被添加到窗口时调用。...接着使用 Activity 的 setContentView() ,将初始化的 ComposeView 添加到底层布局 R.id.content 上; 在 view 完全可见时,即 onAttachView

1.6K64
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MyLayout&TangramKit 的重大升级!

    当一个视图有自己的固有内容尺寸时,就不需要再为视图设置宽度或者高度约束。这也就是为什么一般情况下不对UILabel视图设置宽度和高度约束时系统也能正常完成布局。...那就是当添加或者删除子视图时以及调整了某个子视图的位置和尺寸时就需要重新调整父视图的自适应约束设置。..., 这个容器视图放入滚动视图中,保证滚动视图只有一个容器子视图。...上面的约束设置实现视图滚动的机制也有一定的局限性!那就是一旦在容器视图中添加子视图时就需要重新调整容器视图的右边界和下边界的约束依赖。...因此要将一个布局视图添加到采用AutoLayout约束的布局体系时,就像为普通视图一样给布局视图设置约束依赖即可。

    2.9K20

    Android中文API——ScrollView

    TextView类也有自己的滚动功能,所以不需要使用ScrollView,但是只有两个结合使用,才能保证显示较多内容时候的效率。但只有两者结合使用才可以实现在一个较大的容器中一个文本视图效果。...Down事件或者由视图组的一个子视图处理,或者被用户自己的onTouchEvent()方法处理;此处理意味你应该执行onTouchEvent()时返回true,这样才能继续看到剩下的手势(取代找一个父视图处理...public void requestChildFocus (View child, View focused) 当父视图的一个子视图的要获得焦点时,调用此方法。...只有当视图可以滚动时,此项设置才起作用。 (译者注:这个函数是2.3 r1 中新增的,API Level 9。...如果只是添加到视图,调用时显示的是旧值0。(译者注:也就是添加到视图时,oldw和oldh返回的是0)。

    5.7K30

    Android入门教程 | Fragment 基础概念

    (在本例中,此值为 false,因为系统已将扩展布局插入 container,而传递 true 值会在最终布局中创建一个多余的视图组。) 接下来,需将该片段添加到您的 Activity 中。...因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。...不过,只有在移除片段的事务执行期间通过调用 addToBackStack() 显式请求保存实例时,系统才会将片段放入由宿主 Activity 管理的返回栈。...但请注意,只有在该片段附加到 Activity 时才需调用 getContext()。如果尚未附加该片段,或者其在生命周期结束期间已分离,则 getContext() 返回 null。...注意使用inflater构建View时一定要将attachToRoot指明false,因为Fragment会自动将视图添加到container中,attachToRoot为true会重复添加报错。

    4.8K40

    Android中的视图焦点Focus的详细介绍

    而在触摸设备上通常默认情况下只有EditText控件才具有焦点,而我们通常会遇到的一个问题就是当进入一个具有EditText的界面时键盘就会自动弹出,而且有时候可能无法消失,但需求可能是进入时不弹出键盘...下面是几个关于焦点特性的描述: ViewGroup中有一个mFocued成员来保存子视图中哪个子视图是具有焦点的视图,并且这样一直会递归下去。...比如某个视图层次下的根视图ROOT下有A,B,C三个子视图,而B下面又有B1,B2,B3三个子视图,而这时候B3是具有焦点的子视图,那么在B中的mFocued保存的是B3,而ROOT下的mFocued保存的是...ViewGroup没有焦点并不代表其子视图也没有焦点,这里没有父子制约关系。 任何时候一个窗口内都只有一个视图具有焦点,或者所有视图都无焦点。 并不是所有视图都可以获取焦点。...FOCUS_AFTER_DESCENDANTS: 当ViewGroup调用requestFocus时优先让里面的子视图成为焦点,只有子视图无法成为焦点时才让自己成为焦点视图。这个特性也是默认特性。

    3.1K20

    你真懂的ViewStub,include,merge么

    例如上述例子中,include时设置了该布局的id为my_title_ly,而my_title_layout.xml中的根视图的id为my_title_parent_id。...将根view添加到父控件中 2.ViewStub 其实ViewStub就是一个宽高都为0的一个View,它默认是不可见的,只有通过调用setVisibility函数或者Inflate函数才会将其要装载的目标布局给加载出来...例如我们通过一个ViewStub来惰性加载一个消息流的评论列表,因为一个帖子可能并没有评论,此时我可以不加载这个评论的ListView,只有当有评论时我才把它加载出来,这样就去除了加载ListView带来的资源消耗以及延时...Merge 其实就是减少在include布局文件时的层级。标签是这几个标签中最让我费解的,大家可能想不到,标签竟然会是一个Activity,里面有一个LinearLayout对象。...例如我们在复用一个含有多个子控件的布局时,肯定需要一个ViewGroup来管理,例如这样 : <FrameLayout xmlns:android="http://schemas.android.com

    53220

    浅析 Android 的窗口

    由此可见,Window 描述的窗口只是在通用窗口的基础上,再抽象了一层,把符合某种规范的窗口统一了一下。Window 所描述的窗口,应该是通用窗口的一个子集。...B 是 A 的子窗口,当 A 不可见时,B 也会不可见的。如果A不可见时添加B,B 也是不可见的,直到 A 可见为止,B 跟随一起可见。 ?...而 generateLayout 只在 mContentParent 为 null 的时候被调用,而 mContentParent 只有在第一次调用 setContentView 时为 null,此后就不再为...接下来,当应用程序调用 show 方法时,Dialog 就会显示出来,由此可见,把 View 添加到窗口的过程应该是在 show 方法中执行的。 ?...由此可见,父视图的的情景菜单项会出现在每个一个子视图中。 ?

    4.1K112

    RunLoop 总结:RunLoop的应用场景(二)让Timer正常运转

    上一篇讲了使用RunLoop保证子线程的长时间存活,而不是执行完任务后就立刻销毁的应用场景。这一篇就讲述一下RunLoop如何保证NSTimer在视图滑动时,依然能正常运转。...中的还没有执行的任务,会在mode切换时,再次添加到当前的mode中,这样就能保证不管当前runloop切换到哪一个mode,任务都能正常执行。...示例代码: //首先是创建一个子线程 - (void)createThread { NSThread *subThread = [[NSThread alloc] initWithTarget:...因为RunLoop是独立的两个,相互不会影响,所以在子线程添加timer,滑动视图时,timer能正常运行。...总结 1、如果是在主线程中运行timer,想要timer在某界面有视图滚动时,依然能正常运转,那么将timer添加到RunLoop中时,就需要设置mode 为NSRunLoopCommonModes。

    91451

    Android之View的诞生之谜

    在了解死亡三部曲之前,我们先从上层的视角看下死亡三部曲的执行流程。 Activity的布局文件是如何被加载的? 我们的activity中的视图是什么时候被加载的呢?...window是一个抽象类,他只有一个实现类,那就是phoneWindow,phoneWindow是android系统中窗口的顶级类。...在该布局下面,有标题view和内容view这两个子元素,而内容view则是上面提到的mContentParent。...然后,并没有发现任何与测量、布局、绘制相关的点,可能你会想,我们不会搞错了吧,其实没有哦,你们想想,setContentView实在,既然还是不可见的,那我为什么要耗费资源去测量呢,你最终能不能露个脸还说不准呢...跟到这里,我们来总结一下,activity启动过程中,在执行handleResumeActivity时将我们的顶层视图DecorView通过WindowManager挂载到window中。

    47330

    【Hybrid开发高级系列】ReactNative(七) —— RN组件专题

    提供一个可选按钮的列表。点击任何按钮触发各自的按下回调动作,并且忽略警告。在默认情况下,只有一个按 钮是“OK”按钮。列表中最后一个按钮被视为“主”按钮,它被用粗体显示出来了。...导航视图是最初在屏幕上不可见的,但可以从由drawerPosition指定的窗口的侧面拉出,其宽度可通过drawerWidth设置。...当动态加载一些可能非常大(或概念上无限大的)数据集时,为了让列表视图滚送的顺畅,有一些性能操作设计:     • 只有重新呈现改变行——提供给数据源的hasRowChanged函数告诉列表视图是否需要重新呈现一行...例如,传递stickyHeaderIndices = {[0]}将使得第一个子视图固定在滚动视图的顶部。此属性不支持与 horizontal = {true}结合。...为了使这个属性有效,它必须被应用到一个视图中,在这个视图里包含很多子视图和外部约束。子视图中还应该有溢出:隐藏,应该包含视图(或者它的一个子视图)。

    3.1K40

    基础篇章:关于 React Native 之 Touchable 系列组件的讲解

    所有能够响应触摸事件的元素都应该带有一个反馈效果,这就是为什么web应用体验总是显得不如原生效果好的原因之一。...(TouchableWithoutFeedback只支持一个子节点,如果你希望有多个子元素,请用view包裹住它们再使用)。 属性 我们一起来看看,它有哪些属性方法呢?...在底层实现上,实际会创建一个新的视图到视图层级中,如果使用的方法不正确,有时候会导致一些不希望出现的视觉效果出现。比如没有给视图的backgroundColor显式声明一个不透明的颜色。...友情提示:TouchableHighlight只支持一个子节点,如果你希望有多个子元素,请用view包裹住它们再使用。...当按下的时候,封装的视图的不透明度会降低,但是这个过程并不会真正改变视图层级,而且我们非常容易简单的添加到应用而且不会产生其他额外的一些错误。

    2.5K90

    基础篇章:关于 React Native 之 Touchable 系列组件的讲解

    所有能够响应触摸事件的元素都应该带有一个反馈效果,这就是为什么web应用体验总是显得不如原生效果好的原因之一。...(TouchableWithoutFeedback只支持一个子节点,如果你希望有多个子元素,请用view包裹住它们再使用)。 属性 我们一起来看看,它有哪些属性方法呢?...在底层实现上,实际会创建一个新的视图到视图层级中,如果使用的方法不正确,有时候会导致一些不希望出现的视觉效果出现。比如没有给视图的backgroundColor显式声明一个不透明的颜色。...友情提示:TouchableHighlight只支持一个子节点,如果你希望有多个子元素,请用view包裹住它们再使用。...当按下的时候,封装的视图的不透明度会降低,但是这个过程并不会真正改变视图层级,而且我们非常容易简单的添加到应用而且不会产生其他额外的一些错误。

    1.9K90

    mysql-innodb的事务

    事务分类 扁平事务 扁平事务是指事务开始,提交,回滚都是原子的,要么同一提交,要么统一回滚 带有保存点的扁平事务 除了支持扁平分支支持的操作外,允许在事务执行过程中回滚到同一事务较早的一个状态 链事务...与带保存点的扁平事务不同的是一个子事务失败整个回滚,与多个扁平事务不同的是对多个子事务会进行管理,避免在部分环节失败后前面的子事务已提交完成 嵌套事务 嵌套事务类似于事务组成的树 子树既可以是嵌套事务,...也可以是扁平事务 叶节点一定是扁平事务,且每个子事务从跟到叶节点的距离可以是不同的 位于根节点的事务称为顶层事务 子事务既可以提交也可以回滚,但操作要等到父事务提交后才会生效 分布式事务 通常是在分布式环境下允许扁平事务...) up_limit_id,生成读视图时最大的事务id 读视图可见性规则 通过找到聚簇索引对应的行数据记录,再根据行记录中的指向undo log链 如果undo log链上的事务id为活跃事务,则数据不可见...,继续找undo log的下一个节点 如果undo log链上的事务id大于当前事务id,则数据不可见 如果undo log链上的事务id大于low_limit_id(也就是大于生成视图时的已提交的最大事务

    13310

    对于容器环境来说 全栈监控究竟意味着什么?

    其他的考虑 从这些层收集不同的度量标准本身已经是一个挑战。大多数监控工具只关注其中的一个子集,因为它们是为传统的单片应用程序开发的。...还有一些其他重要的考虑事项,与度量指标和事件的收集方式有关。 ·自动仪表:考虑到容器的短暂特性,新容器在启动时自动监控是至关重要的。...·另外,当将新节点添加到集群时,重要的是这些节点配置,而且配置了正确的监视代理和设置,这样你的监视就可以与环境进行伸缩。...你通常希望从高层次的服务和集群的视图开始,然后在出现问题时能够进行深入的研究。 ·同时,对问题本身的检测也具有挑战性。容器和服务的数量以及它们生成的度量指标的数量已经导致了数据的泛滥。...·最后,在发现问题的同时,还应该对它们进行修复。为此,需要收集适当数量的上下文信息来进行故障排除。这包括在问题发生时发生的其他事件的相关性。是否所有的特定服务的容器都受到了影响,或者仅仅是一个?

    1K60

    Android布局优化之ViewStub、include、merge使用与源码分析

    其实ViewStub就是一个宽高都为0的一个View,它默认是不可见的,只有通过调用setVisibility函数或者Inflate函数才会将其要装载的目标布局给加载出来,从而达到延迟加载的效果,这个要被加载的布局通过...例如我们通过一个ViewStub来惰性加载一个消息流的评论列表,因为一个帖子可能并没有评论,此时我可以不加载这个评论的ListView,只有当有评论时我才把它加载出来,这样就去除了加载ListView带来的资源消耗以及延时...其实就是减少在include布局文件时的层级。标签是这几个标签中最让我费解的,大家可能想不到,标签竟然会是一个Activity,里面有一个LinearLayout对象。...例如我们在复用一个含有多个子控件的布局时,肯定需要一个ViewGroup来管理,例如这样 : 在开发过程中,我们一定要尽量去深究一些常用技术点的本质,这样才能避免出了问题不知如何解决的窘境。追根究底才能知道为什么是这样,也是自我成长的必经之路。

    1.4K20

    UIKit Dynamics:开始入门 —《Graphics & Animation系列一》

    当创建一个行为的实例时,将它与一组项目相关联 - 通常是视图。 通过这种方式,可以选择哪些项目受到行为的影响,在这种情况下哪些项目会受到重力的影响。...这也解释了为什么屏障不会移动,直到正方形与它碰撞。 现在需要一个不同的方法来解决问题。 由于障碍视图是不可移动的,所以动力学引擎不需要知道它的存在。 但是如何检测到碰撞?...红色屏障对用户而言仍然可见,但对动态引擎不可见,而边界对动态引擎可见但对用户不可见。 当方块落下时,它似乎与屏障相互作用,但它实际上碰撞了不动的边界。 构建并运行,如下所示: ?...碰撞通知 到目前为止,已经添加了一些视图和行为,然后让动态接管。 在下一步中,将了解如何在物品碰撞时接收通知。...用户交互 正如刚刚看到的,当物理系统已经运动时,我们可以动态添加和删除行为。 在最后一节中,每当用户点击屏幕时,都会添加另一种类型的动态行为UISnapBehavior。

    2.5K30

    iOS的MyLayout布局体系--浮动布局MyFloatLayout

    而我们的浮动布局也是支持某个子视图向左或者向右浮动的。当某个子视图在加入到布局视图时,可以设定为向左还是向右浮动,这里的向左和向右是不能同时支持的,视图要么向左要么向右。...浮动布局9       上面的例子中我们把子视图添加到布局视图的顺序分别是A,B,C,D,E,F这个顺序,且设定C,D,E这三个子视图是向左浮动的,而A,B,F这三个子视图是向右浮动的。...在默认情况下当我们建立的是一个左右浮动布局时,我们添加到布局里面的所有子视图默认都是向左浮动的,而当建立的是一个上下浮动布局时,我们添加到布局里面的所有子视图默认都是向上浮动的,因此当需要改动子视图浮动的方向则可以设置属性...reverseFloat来实现,这个属性是一个BOOL类型的值,当设置为YES时表示按默认方向相反的方向浮动,也就是在左右浮动布局中,如果设置某个子视图的reverseFloat为YES的话则表示子视图是向右浮动...视图的扩展属性clearFloat也是一个BOOL类型,表示是否清除浮动,默认值是NO表示不清除浮动,当某个子视图需要有清除浮动的效果时,请将这个属性设置为YES。

    1.3K30
    领券