Android View问题排查汇总

View问题排查汇总

1. 本应展示的view没有显示

1.1 分析

解决问题之前,避免依靠直觉去解决问题,我们应该先分析下view显示的几个因素

view能够显示有几个因素

  1. 依赖的内容都展示了,一般来讲是父view都在展示
  2. view自身设置为了visible
  3. view没有被覆盖
  4. view的大小不是0

知道了这么几个条件,我们做对应的排查即可

1.2 问题排查

上方面分析了展示的几个提交,一个条件没有达到,view就不能正常显示,怎么样能够排除上面的每个问题的原因呢,这也是找到问题的原因所在

view没有显示的几个原因

  1. 依赖的view没有做展示
  2. view自身设置了gone/invisible
  3. view被覆盖了
  4. view的大小是0

排查view的问题有几个方式

  1. 代码排查

  2. 借助于工具

1.2.1 代码排查

代码排查是最直接我们能够想到的,代码排查也有几个方式

  1. 给view设置一个背景色
  2. 阅读源码,逐步分析
1.2.1.1 给view设置背景色

给view设置一个背景色,看view是否真的展示了出来,但是能不能想到更好的办法
1. 代码排查需要的时间比较长,而且可能是比较慢的,尤其是对于大型的客户端工程.
2. 在上面提到的几个触发的几个原因,也许还不能一次就看到结果,或者说是没有效果的,假如说view的背景色设置为红色,但是view还是没有显示,能确定那个因素是不可能的,其实都没有排查掉

1.2.1.2 阅读源码,逐步分析

阅读源码是很好的方式,对于阅读源码的速度以及理解能力会有提高,但是同样有几个弊端

  1. 对于接受别人的代码而言,上手就要阅读源码,代码量可能很大,而且我们首先是定位问题,不是要直接的解决问题,定位了问题,下一步才是解决方案.
1.2.1.3 总结

适合场景 : 代码排查适合于,不能debug的工程,以及作为排查的最后的兜底方式.

1.2.2 工具

其实view没有展示,是现象,我们可以从现象倒推出下一步的现象

有几个工具可以借鉴

  1. android系统的显示布局的边界
  2. 借助于hierachyView
  3. 借助于LayoutInspector
1.2.2.1 android系统的显示布局的边界

这个操作是最简单的,但是发现问题的几率比较小,一般使用这个也是配合设置view的背景色一起使用

1.2.2.2 借助于hierachyView

已经过时的方法,不做分析

官网链接 https://developer.android.com/studio/profile/hierarchy-viewer.html

1.2.2.3 借助于LayoutInspector(方便,快捷,推荐)

android studio提供了LayoutInspector的入口, LayoutInspector能够查看布局的继承结构,已经单个view的属性(view的大小,布局的属性,view的显示隐藏等),因而这种方式是很好的.

能够查看这些属性,我们上面提到的几个导致view不能显示的原因,都能迎刃而解

但是要注意适用的场景

  1. debug的模式
  2. android系统 api >= 16

还可能有其他的限制条件,具体可以查看 官方链接 https://developer.android.com/studio/debug/layout-inspector.html

2. View 触摸事件

view在相关的动画或者移动处理时,如果要依靠view的onTouch时的ACTION_MOVE的处理时,可能是有问题的,因为ACTION_MOVE在部分手机上的回调可能是没有的,在用户的手小幅度的移动时,这个事件可能是忽略的

posted @ 2017-11-16 09:32  Panda Pan  阅读(23)  评论(0编辑  收藏  举报