首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

笔记46 | Android性能优化之优化layout层级(一)

---- 检查 Layout Android SDK 工具箱中有一个叫做Hierarchy Viewer工具,能够程序运行时分析 Layout。你可以用这个工具找到 Layout 性能瓶颈。...比如,下图就是前一个图中所示 Layout 层级关系。 ? 在上图中,你可以看到一个三层结构,其中右下角 TextView 布局时候有问题。...另一个使用 Lint 好处就是,它内置于 Android Studio 中。Lint 在你导编译程序时自动运行。...Android Studio 中,你可以为单独 build variant 或者所有 variant 运行 lint。...你也可以 Android Studio 中管理检测选项, File > Settings > Project Settings ? 中。检测配置页面会显示支持检测项目。

1.6K70

Android 优化——布局优化

Android 优化目录 ---- 理想情况下,60 FPS 以上就不会卡顿,就是 1 秒内要有 60 帧,所以每一帧要在 16ms 内绘制完成。...如果一个页面无法 16ms 内完成渲染,就会感到卡顿。 刷新机制可以看Android Project Butter分析或《Android应用性能优化最佳实践》2.1.2 刷新机制一节。...CPU Profiler TraceView Android Studio 3.0 以上已被弃用,被 CPU Profiler 替代,参见 https://developer.android.com...一般来说,这个区域不超过屏幕 1/4 是可以接受。 深红:每个像素多绘制了 4 次或者更多。严重影响性能,需要优化,避免深红色区域。...include、merge、ViewStub 使用 使用 ConstraintLayout 降低层级 避免过度绘制 使用 Android 自带一些主题时,Activity DecorView

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Android性能优化:手把手带你全面了解绘制优化

前言 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中绘制优化,希望你们会喜欢。 目录 1....优化思路 主要优化方向是: 降低View.onDraw()复杂度 避免过度绘制(Overdraw) 4. 具体优化方案 具体如下 下面,将详细分析每种优化方案 4.1....& 背景导致过度绘制;只能尽可能避免过度绘制: 尽可能地控制 过度绘制次数 = 2 次(绿色)以下,蓝色最理想 尽可能避免 过度绘制粉色 & 红色情况 不允许 3 次以上过度绘制(淡红色)面积...() clipRect() 作用:给 Canvas 设置一个裁剪区域,只有该区域内才会被绘制,区域之外都不绘制 实例说明:DrawerLayout 布局 = 左抽屉布局 @Override protected...Rendering、Systrace 5.1 Hierarchy Viewer 简介 Android Studio 提供UI性能检测工具。

70820

Android群英传 神兵利器》读书笔记

系统有一个默认debug签名 Android Studio中签名文件是“.jks”文件 Eclipse中签名文件是".keystore"文件 配置签名: signingConfigs{ xys{...清单文件创建占位符 -> 配脚本 -> 生成重命名包(注意AS3.0变化) 系统有一个BuildConfig类文件,是无法改变值。...查看报信息,资源目录等。 Lint 用于检测各项目中(包含库)中一些错误问题,比如资源未用或过时api等。 AS命令行使用gradle lint。...UI性能分析 调试GPU过渡绘制 16ms黄金准则 布局核心准则: 尽量使布局view树扁平,降低布局层次 Google建议View不宜超过8层 使用组合控件 LinearLayout与RelativeLayout...Debug Gpu Overdraw查看重绘界面 1、改善布局,避免重叠 2、控件与主背景颜色相同:移除控件背景 3、自定义view背景,使用dipRect属性减少重绘区域 Profile Gpu

56110

Android:Tools命名空间原来是有大用处

Android Studio 中,我们创建一个 xml 布局文件之后,通常在自动生成代码中,会有一个 tools 命名空间: xmlns:tools="http://schemas.android.com...另外,预览时,如果同时有 tools:xxx 和 android:xxx ,则优先展示 tools:xxx 预览效果, 参考示例代码2 取值说明 具体取值以view属性取值为准。...说明 应用范围 作用对象 Android Studio 布局编辑器 具体作用 节点中设置该属性之后,会指定在预览界面中绘制/展示几个条目 取值说明 int 类型数值 示例代码: 预览界面展示 4...间接引用资源) 取值说明 资源文件引用 使用时, resources 目录下创建一个 xml 文件并指定名称,如: res/raw/keep.xml。...使用时, resources 目录下创建一个 xml 文件并指定名称,如: res/raw/keep.xml。

1.1K20

《Monkey Android》第2课之环境搭建

通过本节课可以学习到内容: Android开发环境搭建 Android SDK及开发工具Android Studio安装 SDK下载和SDK目录详解 ---- 环境搭建 安装JDK 建议安装最新版...SDK下载 国内是无法直接下载SDK各个组件,原因想必你知知大家知,我们不讨论。...相信大家已经看到了,图中有些项目中显示着 Not installed ,有些是 Installed,具体原因如下: ARM EABI v7a System Image是Android系统ARM架构上系统镜像...tools文件夹: 作为SDK根目录tools文件夹,这里包含了重要工具,比如ddms用于启动Android调试工具,比如logcat、屏幕截图和文件管理器,而draw9patch则是绘制android...平台缩放png图片工具,sqlite3可以PC上操作SQLite数据库, 而monkeyrunner则是一个不错压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像创建工具,emulator

73230

Android:Tools命名空间原来是有大用处

Android Studio 中,我们创建一个 xml 布局文件之后,通常在自动生成代码中,会有一个 tools 命名空间: xmlns:tools="http://schemas.android.com...另外,预览时,如果同时有 tools:xxx 和 android:xxx ,则优先展示 tools:xxx 预览效果, 参考示例代码2 取值说明 具体取值以view属性取值为准。...说明 应用范围 作用对象 Android Studio 布局编辑器 具体作用 节点中设置该属性之后,会指定在预览界面中绘制/展示几个条目...() 间接引用资源) 取值说明 资源文件引用 使用时, resources 目录下创建一个 xml 文件并指定名称,如:res/raw/keep.xml。...使用时, resources 目录下创建一个 xml 文件并指定名称,如:res/raw/keep.xml。

1.6K40

Android性能优化系列之apk瘦身

包体分析 Android Studio工具栏里,打开build–>Analyze APK, 选择要分析APK包 可以看到占用空间主要是代码、图片、资源和lib和assert文件,主要方向精简代码...矢量图 矢量图是由点与线组成,和位图不一样,它再放大也能保持清晰度,而且使用矢量图比位图设计方案能节约30~40%空间,现在谷歌一直强调扁平化方式,矢量图很好契合该设计理念。...2) 与位图相比多了一层计算,需消耗更多性能 (3) 不支持.9图 (4)不适合表现真实照片和复杂图形,一般使用在简单icon和动画上 使用shape背景 特别是扁平化盛行的当下,很多纯色渐变圆角图片都可以用...借助于android support库实现一个全版本兼容着色方案,参考代码:DrawableLess.java 在线化素材库 如果你APP支持素材库(比如聊天表情库)的话,考虑在线加载模式,因为往往素材库都有不小体积...通过查看exploded-aar目录和External Libraries或者反编译生成APK,尽量避免重复库大小,减小APP大小。

1.1K30

【基本功】Litho使用及原理剖析

2.1 Litho和原生Android使用上区别 Android传统布局:首先在资源文件res/layout目录下定义布局文件xx.xml,然后Activity或Fragment中引用布局文件生成视图...下面分别介绍两种规范使用方式: Layout Spec规范:用于生成布局类型组件规范,布局组件逻辑上等同于AndroidViewGroup,用于组织其他组件构成一个布局。...3.2 异步布局 Android系统绘制时为了防止页面错乱,页面所有View测量(Measure)、布局(Layout)以及绘制(Draw)都是UI线程中完成。...提前异步布局就意味着要提前创建好接下来要用到一个或者多个条目的视图,而Android原生View作为视图单元,不仅包含一个视图所有属性,而且还负责视图绘制工作。...3.3 扁平视图 使用Litho布局,我们可以得到一个极致扁平视图效果。它可以减少渲染时递归调用,加快渲染速度。 下面是同一个视图Android和Litho实现下视图层级效果对比。

2.1K10

Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 翻译 用户经常会避免下载看起来体积较大应用,特别是不稳定2G、3G网络或者以字节付费网络。...移除不使用资源 lint是Android Studio一个静态代码分析工具,检测“res/”目录中你代码没有引用资源。...Android Studio中,能将BMP,JPG,PNG或者静态GIF图片转换成WebP格式。更多信息,请看Create WebP Images Using Android Studio。...使用向量图 你能使用向量图去创建一个分辨率无关图标。使用向量图能够显著减少APK大小。Android中向量图是以VectorDrawable对象形式存在。...避免抽取Native库 APK中存储未压缩so文件,并且Manifest文件中设置android:extractNativeLibs为false,这会防止安装时PackageManager

1.8K100

Android 减包 - 减少APK大小

P图Android工程师 用户经常会避免下载看起来体积较大应用,特别是不稳定2G、3G网络或者以字节付费网络。...移除不使用资源 lint是Android Studio一个静态代码分析工具,检测“res/”目录中你代码没有引用资源。...Android Studio中,能将BMP,JPG,PNG或者静态GIF图片转换成WebP格式。更多信息,请看Create WebP Images Using Android Studio。...使用向量图 你能使用向量图去创建一个分辨率无关图标。使用向量图能够显著减少APK大小。Android中向量图是以VectorDrawable对象形式存在。...避免抽取Native库 APK中存储未压缩so文件,并且Manifest文件中设置android:extractNativeLibs为false,这会防止安装时PackageManager

1.7K60

Android Studio Bumblebee (2021.1.1) 稳定版正式发布

为了解决这个问题,我们 Android Gradle 插件 (AGP) 7.1.0 中引入了一个测试运行器,默认情况下 Android Studio Bumblebee 在运行插桩测试时都将使用此运行器...AGP 升级助手 最初 Android Studio 4.2 中推出,可以帮助用户将其项目更新到最新版本,Arctic Fox 中更新升级助手会提供一个界面,用户可以借此查看和选择升级版本和步骤... Bumblebee 中,升级助手现在还会检查并提供更新 DSL 选项,从而帮助您避免使用已弃用但尚未删除 API。...查看静态绘制对象时,您可以为预览窗口设置 "透明"、"白色"、"黑色"、"方格" 背景样式,以查看不同条件下绘制对象。...语义 设计 互动预览 动画矢量绘制对象预览 设计工具设备选择器更新

2K10

例说 Constraint Layout:初探

| 导语 去年用 Android Studio 新建一个 Demo 工程时,发现自动生成 MainActivity XML 布局文件使用竟然是 ConstraintLayout(CL,约束布局)...这也是为什么我们常常说,尽量不要用 RL 作为嵌套层数很多布局父容器。 而“崇尚”扁平化布局 ConstraintLayout 中有很多专为减少嵌套层级而设计属性。...组成,上面的布局一共就会有 3 层;同时,为了避免首尾两个 icon 端部也有留空,使用了 4 个看不见 View 来定位,导致 View 个数整体增加。...借助 Android Studio 可视化工具,能更迅速完成界面布局 一般我们写一个 XML 布局文件时,都习惯于直接打开 XML 文本进行编辑,但是 ConstraintLayout 不一样,可以说它是和...在此不详说 LE 各种细节了,只做一个整体介绍,并提及一些以为重点,其它相信各位攻城狮随便玩几下就上手啦~ 3.1 布局编辑器简介 使用 Layout Editor 首先需要将 Android

2K10

Android应用开发】Android Studio 简介 (Android Studio Overview)

(Directory-based format) 配置数据 :  -- 含有的配置文件 : 使用 基于目录格式 配置数据时, Project 中会生成 .idea 目录, .idea 目录中有大量...Android Studio 工程目录结构 1....Android 视图 (扁平化显示) (1) Android 视图简介 Android 视图 : 左上角工具栏下面有个下拉菜单, 可以切换此视图, 视图模块图解如下; -- 作用 : 该视图以扁平视角显示了目录结构..., 提供了一个快速操作 Android 工程关键文件途径, 帮助你基于 Gradle 编译系统上进行工作; -- 模块 : 模块层级最顶层提供最重要资源目录; -- 分组 : 将所有模块编译文件分组并放在一个通用目录中...Project 视图 (1) Project 视图 Moudle 目录 Project 视图 Moudle 目录 : 与 Eclipse 中工程视图有一些区别; Android Studio 每个

2.2K41

Android-App性能优化

那么我们如何解决呢,主要从两点入手:ui布局,绘制优化和主线程优化? 布局优化 避免ui布局优化可以先从合理使用背景色开始,比如:如果子view和父布局公用一个背景色就没有必要了。...如果应用程序Activity仍然驻留在内存中,那么应用程序可以避免重复对象初始化、布局加载和渲染,但系统依然会展示闪屏页,直到第一个 Activity 内容呈现为止。...通常减小apk体积方式都是:先用studio自带代码扫描分析工具lint删除无用资源;开启混淆,设置 shrinkResources true和 minifyEnabled true;当然你也可以借助第三方工具如...避免不合适时间(例如低电量情况下、弱网络或者移动网络情况下)执行过多任务消耗电量。这个我们以后说。...比如:线程使用,这里推荐使用线程池,也写过相关文章,感兴趣可以了解一下。Android-ThreadPooll.

2.1K40

Android应用图标微技巧,8.0系统中应用图标的适配

当时苹果工程师写出了一套绝妙算法,可以电脑上绘制出圆和椭圆,所有观看者都被震惊了,除了乔布斯,因为乔布斯觉得圆和椭圆虽然也不错,但是如果能绘制出带圆角矩形就更好了。...由此可以看出,爱奇艺和饿了么这两款应用都是没有Pixel上进行兼容性测试。不过考虑到它们都是只国内市场提供服务,因此也情有原。...如果你还在用老版Android Studio,那么赶快去升级一下,然后再接着看这篇文章。 好,那么现在我们就用Android Studio 3.0来新建一个项目,就叫它IconTest吧。...这是一个使用SVG格式绘制出来带纹理底图。当然如果你看不懂这里面的代码也没有关系,因为也看不懂。...感兴趣朋友可以自己到mipmap目录下面去观察一下Android Studio帮我们生成了哪些东西,这里就不带着大家一一去看了。

1.7K20

Android 面试之必问性能优化

重叠UI布局中,如果不可见UI也在做绘制操作或者后一个控件将前一个控件遮挡,会导致某些像素区域被绘制了多次,从而增加了CPU、GPU压力。 那么如何找出布局中Overdraw地方呢?... Android Studio 中打开您项目,设备上构建并运行项目。 启动 Android Device Monitor。...这会使用应用视图层次结构填充相关窗格。 在这里插入图片描述 提升布局性能关键点是尽量保持布局层级扁平化,避免出现重复嵌套布局。...在这里插入图片描述 为了避免发生内存抖动,我们需要避免for循环里面分配对象占用内存,需要尝试把对象创建移到循环体之外,自定义View中onDraw方法也需要引起注意,每次屏幕发生绘制以及动画执行过程中...4.2.1 Network Monitor Android Studio内置Monitor工具提供了一个Network Monitor,可以帮助开发者进行网络分析,下面是一个典型Network Monitor

87100

Android 面试之必问性能优化

重叠UI布局中,如果不可见UI也在做绘制操作或者后一个控件将前一个控件遮挡,会导致某些像素区域被绘制了多次,从而增加了CPU、GPU压力。 那么如何找出布局中Overdraw地方呢?... Android Studio 中打开您项目,设备上构建并运行项目。 启动 Android Device Monitor。...这会使用应用视图层次结构填充相关窗格。 [在这里插入图片描述] 提升布局性能关键点是尽量保持布局层级扁平化,避免出现重复嵌套布局。...[在这里插入图片描述] 为了避免发生内存抖动,我们需要避免for循环里面分配对象占用内存,需要尝试把对象创建移到循环体之外,自定义View中onDraw方法也需要引起注意,每次屏幕发生绘制以及动画执行过程中...4.2.1 Network Monitor Android Studio内置Monitor工具提供了一个Network Monitor,可以帮助开发者进行网络分析,下面是一个典型Network Monitor

78231

App性能优化

App性能优化 目录 1、稳定性 2、流畅度 3、耗损 4、安装包体积 1、稳定性 # 公众号:AllTests软件测试 (1)内存优化 内存分析工具: Memory Monitor 工具 Memory...Analyzer工具 LeakCanary工具 Android Lint 工具 (1.1)避免内存泄漏 单例模式引用Activity类型Context Activity中持有非静态内部类 资源性对象为关闭...标签) View延迟加载(ViewStub标签) 减少层级(merge标签) 删除控件无用属性 wrap_content增加measure成本 (2)渲染优化(避免过度绘制) 移除XML中非必须背景,...移除Window默认背景、按需显示占位背景图片 Canvas.clipRect()来帮助系统识别可见区域,只有可见区域才被绘制 (3)启动优化 减少ApplicationonCreate执行时间 减少启动页面的...onCreate执行时间 三方SDK异步初始化 (4)主线程任务优化 主线程避免耗时操作(网络访问/大文件IO操作) (5)视图刷新优化 减少刷新次数 缩小刷新区域 (6)动画优化 选择合适动画框架

1.2K10
领券