今天看到一篇文章,讲的是UI过度绘制,里面有提到很多方法,比较不错。想想确实有时候我们在做开发时候,发现UI性能怎么那边差,也没有做什么复杂的操作。那为什么会性能很差呢。也找不到好的办法来分析。但是Android提供了一个工具:HierarchyViewer可视化调试工具,它帮助我们分析View的计算和绘制时间。
1. 打开Idea开发工具:Tools-->Android-->Android device Monitor
2.打开adb,连接上模拟器。
天天模拟器连接地址:adb connect 127.0.0.1:6555
3.模拟器启动应用程序,进入到应用页面。
4.切换到电脑Android device Monitor,
点击菜单window-->openperspective,选中hierarchy View;就会出来Tree view,该视图可以展示选中avtivity的所有控件层级。
5.再点击左侧要调试的activity等,此时Tree view就会展示出所有的控件。如下:
看 到层级关系,可能会想到:
出现性能慢是否和层级太多,布局耗费太多时间
?对,所以第一步要检查下布局问题。
那怎么知道每个控件耗费时间?
选中视图树里面的控件,点击,就会展示每个控件的详细信息。
但是这样看比较麻烦,每个控件都要点击看一下。有一个快捷的方式可以把所有控件使用时间一下展示出,步骤就是点击
右上角的下图中红框的按钮
点击或,Tree view里面的所有布局会展示3个点如上图有显示,依次表示:
计算时间、布局时间、绘制时间
。红色就是要关注的了。一张图很好的说明了参数含义:
有3个颜色:
绿色,黄色,红色
,红色代表着耗时最长,也就意味着我们需要优化,我们可以不断点击,查看 测量布局以及绘制所需要的时间,从而优化。
如果发现出现红色,就需要对该控件进行优化了。
参考:http://www.open-open.com/lib/view/open1421656495031.html
Lay
er
Visualiz
er
A simple web-based 3D lay
er
visualiz
er
(useful for visualizing mat
er
ial
UI
s and oth
er
things involving depth/shadows)
Check the example code (live demo) or template code (live demo) to get started.
Tree Visualiz
er
Also included is a layout XML tree visualiz
er
, useful for teaching layouts.
Check the example code (live demo) or template code (live demo) to get started.
LazyOrg
View
A Simple Realization of Org
View
Because I cannot find a valid solution unless Google OrgChart and some OrgChart.js.
Installation
Gradle
Step 1. Add it in your root b
ui
ld.gradle at the end of repositories:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
Step 2. Add the dependency
dependencies {
implementation 'com.github.onlyloveyd:LazyOrg
View
:v1.1'
Basic Usage
Step 1. Add LazyOrg
View
into your layout.
Android
不同层次的触摸事件监听
APP开发中,经常会遇到有关手势处理的操作,比如向右滑动返回上一个页面。关于触摸事件的处理,我们可以大概处理在不同的层次上。
Activity层:可以看做触摸事件获取的最顶层
View
Group层:
View
Group层可以自主控制是否让子
View
获取触摸事件
View
层:可以决定自己是否真正的消费触摸事件,如果不消费抛给上层
View
Group
Activity级别的手势监听:(右滑动返回上层界面)
Activity层手势监听的使用场景:一般用于当前页面中没有过多的手势需要处理的时候,至多存在点击事件。对于右滑返回上层界面这种需
获取当前应用的activity屏幕上所有控件的
UI
布局层次
关系
并保存在xml文件里面,可以执行下面命令:
adb shell
ui
automator dump /sdcard/
ui
.xml
实质是调用了
Android
系统下的/system/bin/
ui
automator.jar的dumpWindow
Hierarchy
方法。
http://
android
-doc.github.io/tools/help/
ui
automator/index.html
http://
android
-doc.github