Android 进阶 - 测量与布局
顾名思义,测量与布局是两个分开的流程。首先从根 View 开始递归调用子 View 的 measure() 方法来测量。然后再从根 View 开始递归逐级调用子 View 的 layout() 方法来布局。此时会把测量的结果,即子 View...
Android Bitmap 与 Drawable
做了好几年 Android 开发,很惭愧地说,其实我也不太能分清这两个的区别与使用场景,直到今天。Bitmap 本质上是一个位图数据,它只是单纯地存储一张图片,仅此而已。Drawable 这是一个上层的绘制工具,有点类似 View,可以调...
Android 进阶 - 动画与硬件离屏缓冲
属性动画是 Android 中最基本最简单最方便的动画,自然也是限制最多的一种。它仅能使用几种内置的方式进行变换,包括:平移、缩放、透明度、旋转,没了。允许使用插值器(非线性动画)。ViewPropertyAnimator 的使用非常简单...
Android 进阶 - Canvas 高级绘制
Canvas 是 Android 系统提供的较为底层的绘图 API,常用于自定义 View,在 Wear OS 中更是表盘绘制的必备。Canvas 提供了 drawXXX() 系列方法,配合画笔属性可以画出诸多图形,这些 API 命名清晰...
LeetCode222 完全二叉树节点数
传送门 According to Wikipedia, every level, except possibly the last, is completely filled in a complete binary tree, and...
OkHttp 源码初探
本文使用 okhttp:4.4.1 我们从 Call.enqueue 开始研究源码,宏观上了解一下 okhttp 如何把请求发出去。轻松发现对于异步请求,统一转换成了 AsyncCall 交给 Dispatcher 来执行。Dispatc...
HTTP 基础/连接/授权
请求方法 Body 幂等 GET 获取资源 Y POST 增加或修改资源 Y PUT 修改资源 Y Y DELETE 删除资源 Y HEAD 同 GET;响应报文没有 Body 响应报文也没有 Y 详细列表 状态码 描述 1xx 临时消息...
LeetCode N数之和
梦开始的地方 (LeetCode 第一题) 传送门 Given an array of integers nums and an integer target, return indices of the two numbers such...
LeetCode239 窗口最大值
传送门 You are given an array of integers nums, there is a sliding window of size k which is moving from the very left of...
LeetCode209/904/76 - 滑动窗口
滑动窗口是数组题目中常见的算法。通常可以把 O(n^2) 的复杂度变成 O(n)。滑动窗口适合「在数组中求一个连续的子数组」之类的题目。要使用滑动窗口,需要考虑三个条件:窗口内是什么?一般要保证窗口内是满足题意的子数组(首次达成题意之前除外...