ARTS-20

127 阅读2分钟

A

111. Minimum Depth of Binary Tree

同样可以使用 DFS 或者 BFS

收到之前题目“最大深度”的定式思维,直接使用了 min(minDepth(root.left), minDepth(root.right)) + 1  ,这样是错误的,最小深度和最大深度不同,最大深度可以认为是左子树 和 右子树中的最大值加上根节点,但最小深度并不是,比如由两个节点,关系时根节点和左子树几点,这样树的最小深度是 2,如果按照上面的定时思维,求出来就是 1 了。

所以,在上面的基础上,要加上判断条件。最大区别是:当右子树为空时,左子树的最小值则为参考值,而不是使用右子树的最小值 0。

R

Introducing Constraint Layout 2.0

Constraint Layout 2.0 新特性:

Flow: 可以使多个 View 按照运行时的真正宽度多态换行等;app:flow_wrapMode 属性可能的取值为:none、chain、align

Layer:将多个 View 作为一个 Layer,方便对他们统一做动画等; 

Motion Layout:提供了多个 View 之间“相互协作”的动画系统,动画支持“快进”和“回退”;整合进 Android Studio 的 Motion Editor 可以在编译时就能对 Motion Layout 进行预览;虽然 Motion Layout 提供了强大的动画功能,但是更适合的场景是:1.、受其他输入事件影响的动画,比如滑动时改变 toolbar;2、受状态影响的动画;

T

android:configChanges 属性

Activity 中添加了 android:configChanges 属性,在当所指定属性(Configuration Changes)发生改变时,通知程序调用onConfigurationChanged()函数。

设置方法:将下列字段用“|”符号分隔开,例如:“locale|navigation|orientation”

对Android:configChanges属性,一般认为有以下几点:

  • 不设置Activity的[android]:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
  • 设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
  • 设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

但是,自从Android 3.2(API 13),在设置Activity的android:configChanges = "orientation|keyboardHidden" 后,还是一样会重新调用各个生命周期的。因为 screen size 也开始跟着设备的横竖切换而改变。所以,在 AndroidManifest.xml 里设置的 MiniSdkVersion 和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置 "orientation",还必须设置 "ScreenSize"。解决方法:AndroidManifest.xml 中设置 android:configChanges="orientation|screenSize“

S

《ThreadLocal 浅析》