ARTS-4

183 阅读2分钟

A

103. Binary Tree Zigzag Level Order Traversal

所谓的“Z”字形打印二叉树,又是一个二叉树遍历问题。

一看就类似于层次遍历,但是得处理好左右打印顺序和奇偶行,我的方法是,使用一个变量和两个栈,分别用来控制奇偶行数和下一行添加的顺序,奇数行时子 View 按照 left 到 right 的属性添加,偶数行时按照 right 到 left 的顺序添加。

R

50 Android Studio Tips, Tricks & Resources you should be familiar with, as an Android Developer

看个轻松愉快的吧:

1、通过配置logcat过滤规则,让程序崩溃时不清空当前应用的log 

2、在窗口右键可以选择水平或垂直分屏(split),当然,最好是设置快捷键

3、充分利用代码模板节省重复工作

4、cmd + u:go to super

5、layout 视图下切换design/text 模式 ctr + shift + 左右→

6、Implement methods: control + i 

7、Move hardcoded strings to resources: option + return

比较喜欢的模式:

1、演示模式(Presentation Mode);

2、无打扰模式(Distraction Free Mode)下左右分屏,然后通过快捷键(Goto Next Splitter)左右切换焦点。

T

1、ConstraintLayout 确实很方便
  • Placeholder 设置占位,可以在运行时动态改变某个控件的位置,从原有位置直接变为 placeholder 所在位置。很适合一个单独的 layout 布局文件被 add 到其他 constraintLayout 上时,layout 中的某个 view 需要重新定位的场景(比如引导蒙层)。但是使用时也要注意:
    1. 替代 placeholder 的 View 需要包含在 placeholder 的父 View 内。因为 placeholder 中是通过 ((View)this.getParent()).findViewById(id); 的方式去查找的,如果二者不满足这种关系,则无法替换;
    2. 替代 placeholder 的 View,在被替换后,点击事件等也跟随改变,但之前的位置会留有空白区域(类似于 invisible 而不是 gone),并且在之前的布局文件中,如果存在其他 View 对其约束关系,则在 View 被 Placeholder 替换后,其他 View 的位置保持不变。
  • Guideline:可以设置垂直和水平方向上的百分比位置,可以替代 LinearLayout 中的 weight,当然也更强大。
2、boolean isInEditMode():View 的方法,可以用来判断是否处于 IDE 布局编辑预览状态,可以在自定义 View 时使用该属性给出大体效果,从而在 xml 中使用自定义 view 控件时可以看到一个大概样式。

S

好久没用 Service,这周同事问一个问题,看到一行启动前台 Service 的代码,突然感觉很陌生,随后照着官方文档又做了个笔记:《Service》