Android 简单 ScalableImageView 的实现
学习了 Canvas 高级绘制 和 Android 事件分发机制,是时候做个小 Demo 来练手了。今天做的是 ScalableImageView,要实现的功能如下:默认图片居中,以 CENTER_INSIDE 的方式显示。双击缩放,放大到...
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...