没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
## 每日一问:简述 View 的绘制流程
Android 开发中经常需要用一些自定义 View 去满足产品和设计的脑洞,所以 View 的绘制流程至关重要。网上目前有非常多这方面的资料,但最好的方式还是直接跟着源码进行解读,每日一问系列一直追求短平快,所以本文笔者尽量精简。
想必大多数 Android 开发都知道自定义 View 需要关注的几个方法:`onMeasure()`、`onLayout()` 和 `onDraw()`,这其实也是每个 View 至关重要的绘制流程。
基本绘制都是会从根视图 `ViewRoot` 的 `performTraversals()` 方法开始,从上到下遍历整个视图树,每个View控件负责绘制自己,而 ViewGroup 还需要负责通知自己的子 View 进行绘制操作。`performTraversals()` 的核心代码如下:
```java
private void performTraversals() {
...
int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp.width);
int childHeightMeasureSpec = getRootMeasureSpec(mHeight, lp.height);
...
//执行测量流程
performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);
...
//执行布局流程
performLayout(lp, desiredWindowWidth, desiredWindowHeight);
...
//执行绘制流程
performDraw();
}
```
#### measure()
```java
public final void measure(int widthMeasureSpec, int heightMeasureSpec)
```
每个 View 都有自己的大小,所以基本自定义 View 的时候都需要重写 `onMeasure()` 这个方法,以定制化我们的 View 的宽高。**如果不重写这个方法,我们通常会出现 `wrap_content` 和 `match_parent` 是一样的显示效果。**至于原因,其实�
点击阅读更多
资源评论
萱呀
- 粉丝: 26
- 资源: 354
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功