Android
文章平均质量分 87
HansChen_
这个作者很懒,什么都没留下…
展开
-
Android 12 - WMS 层级结构 && DisplayAreaGroup 引入
1. 简介在 Android 窗口管理中,所有的窗口都是以树形数据结构进行组织管理的,认知这棵 WMS 的树有助于我们理解窗口的管理和显示,同时,WMS 的层级也决定了其在 SurfaceFlinger 的层级结构,这恰恰决定了它的显示规则。2. WMS 顶层层级构建在 Android 12 中,所有窗口树形管理都继基于 WindowContainer, 每个 WindowContainer 都有一个父节点和若干个子节点,我们先看看框架中 WindowContainer 都有哪些类型:RootW原创 2021-11-25 09:39:05 · 5384 阅读 · 6 评论 -
Android 12 - 跟踪利器 WinScope
1. 简介在开发过程中,经常会遇到各种各样的窗口问题,比如动画异常、窗口异常、闪屏、黑屏、错位显示…以前对于这些问题,我们可以通过添加日志,调试分析代码等手段去解决,但这些 UI 问题往往出现在一瞬间,很难把握出现的时机,录制下来的日志往往也是巨大的,从海量的日志中提取有效的信息是一个枯燥且繁琐的事情。Android 也意识到了这个问题,WinScope 的出现有效的帮助我们跟踪窗口和显示问题。它向开发者提供一个可视化的工具,让开发者能使用工具跟踪整个界面的变化过程,让我们可以观察到细微的变化。迭代了原创 2021-11-25 09:37:39 · 9153 阅读 · 0 评论 -
Android 12 - Letterbox 模式
1. 简介随着越来越多大屏和折叠屏设备出现,很多应用并未对不同尺寸的设备进行 UI 适配,这时候应用选择以特定的宽高比显示(虽然 Google 不建议这这样做,官方还是希望开发者可以对不同的屏幕尺寸进行自适应布局~),当应用的宽高比和它的容器比例不兼容的时候,就会以 Letterbox 模式打开。Letterbox 模式下界面会以指定的比例显示,周围空白区域可以填充壁纸或者颜色。至于 Letterbox 的外观可受以下因素影响:config_letterboxActivityCornersRadi原创 2021-11-25 09:35:56 · 4390 阅读 · 5 评论 -
Android 列表滚动优化之 OverScroller 揭秘
1. 简介OverScroller 在 Android 系统中承担着为 ListView、RecyclerView、ScrollView 这些滚动控件计算实时滑动位置的任务,这些位置算法直接影响着每一次滚动的体验众所周知,Android 的动画体验远不如 iOS,即便如今 Android 已普遍支持 120Hz 高刷,体验起来也不是非常舒服。究其原因已经不是硬件性能限制,而是其中很多动画设计本身就有问题。苹果早在很早之前就发布了 Designing Fluid Interfaces 致力于打造一个丝滑流原创 2021-04-12 15:30:23 · 4968 阅读 · 9 评论 -
使用 Ninja 提升模块编译速度
1. 简介从 Android 7 开始,Android 源码编译时默认使用 Ninja,编译时,会先把 makefile 和 bp 转换成 ninja 再进行编译。这个转换过程非常慢(需要遍历处理所有关联的 makefile、bp 文件),即使只是通过 mm 或 mmm 编译某个模块,也会有很多因素触发 ninja 文件的重新生成,而这对基于源码开发的模块很不友好,编译好慢!2. 初识 nin...原创 2019-12-10 18:31:28 · 3511 阅读 · 3 评论 -
Android Q 深色模式(Dark Mode)源码解析
1. 简介随着 Android Q 发布,「黑暗模式」或者说是「夜间模式」终于在此版本中得到了支持,官方介绍见:https://developer.android.com/guide/topics/ui/look-and-feel/darktheme,再看看效果图:其实这个功能魅族在两年前就已支持,不得不说 Android 有点落后了,今天我们就来看看原生是怎么实现全局夜间模的吧2. 打开...原创 2019-10-22 09:59:33 · 13084 阅读 · 2 评论 -
如何顺滑地查看 Android Native 代码
1. 简介使用 Android Studio 查看 Android Framework 代码体验非常好,无论是索引还是界面都让人很满意,但是当你跟踪代码,发现进入 native 逻辑时,就会发现 Android Studio 对 native 代码的支持非常不好,不能索引不支持符号搜索不能跳转等,这些让人非常抓狂。那么如何能在 IDE 愉快地查看 native 代码呢?在 Windows 上,S...原创 2019-10-22 09:58:16 · 3378 阅读 · 0 评论 -
AOSP 编译和烧写
1. 简介很多 Android 开发者都会希望编译 Android 源码并刷进自己的手机里面,但网上教程很多都仅仅是告诉你 lunch、make 等等,但你手里有一台设备时却发现,你编译出的镜像由于驱动关系是不能直接烧进手机的。这里整理了一下步骤,帮助大家可以按照流程编译并烧写镜像。本篇文章以 Pixel 2 && Android 10 为例2. 环境准备这块没啥说,官方教...原创 2019-10-22 09:55:57 · 3503 阅读 · 0 评论 -
ProGuard代码混淆详细攻略
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52770993 本文出自: 【HansChen的博客】ProGuard简介和工作流程PrgGuard环境配置和使用运行PrgGuard需要以下依赖如何运行ProGuardPrgGuard配置文件使用Entry points的概念会用到的指令参数说明Modifier原创 2016-10-09 21:59:48 · 22987 阅读 · 2 评论 -
Android分包MultiDex源码分析
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52845661 本文出自: 【HansChen的博客】概述Android开发者应该都遇到了64K最大方法数限制的问题,针对这个问题,google也推出了multidex分包机制,在生成apk的时候,把整个应用拆成n个dex包(classes.dex、classes2.dex、cl原创 2016-10-18 08:14:42 · 4073 阅读 · 7 评论 -
Robolectric使用教程
转载请标明出处:http://blog.csdn.net/shensky711/article/details/53561172 本文出自: 【HansChen的博客】概述如何使用为项目添加依赖指定RobolectricTestRunner为运行器什么是Shadow类Config配置配置SDK版本配置Application类指定Resource路径使用第三方Library原创 2016-12-10 21:24:32 · 10357 阅读 · 7 评论 -
Android最大方法数和解决方案
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52329035 本文出自: 【HansChen的博客】什么是64K限制和LinearAlloc限制64K限制随着Android应用功能的增加,代码量不断地增大,当应用方法数量超过了65536的时候,编译的时候便会提示: 这个Android著名的Dex 64k method数量上原创 2016-08-26 15:36:56 · 8410 阅读 · 0 评论 -
Android Studio 2.2 NDK开发环境搭建
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52763192 本文出自: 【HansChen的博客】Android应用程序使用NDK的意义在这里就不说了,本文主要讲解如何在Android Studio 2.2下如何一步步搭建NDK开发环境。下载NDK和工具Android Studio2.2开始推荐开发者使用CMake去构建本原创 2016-10-09 08:47:15 · 13013 阅读 · 1 评论 -
Fragment事务管理源码分析
转载请标明出处:http://blog.csdn.net/shensky711/article/details/53132952 本文出自: 【HansChen的博客】概述在Fragment使用中,有时候需要对Fragment进行add、remove、show、hide、replace等操作来进行Fragment的显示隐藏等管理,这些管理是通过FragmentTransaction进行事务管原创 2016-11-11 20:43:57 · 5575 阅读 · 1 评论 -
Fragment源码分析
转载请标明出处:http://blog.csdn.net/shensky711/article/details/53171248 本文出自: 【HansChen的博客】概述Fragment表示 Activity 中的行为或用户界面部分。您可以将多个 Fragment 组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个 Fragment。您可以将原创 2016-11-15 14:54:44 · 2497 阅读 · 1 评论