Android View那点事(一)


写在前面:Android中最常见的即各种View,虽然四大组件不包括View,但是最常用的组件Activity的主要承载对象就是View,而在Android开发中,各种与View相关的知识也不少,因此在此将View的相关知识以目前的情况进行总结,这些总结主要来源于相关书籍和博客以及自己的理解和代码验证,如有出入,望指正。


一:View知识体系

在读书和查阅博客的过程中,View的相关知识点都会被提到,最多的应该是自定义View,但是在开发过程中不仅仅是需要掌握自定义View,在此总结了如下View的相关知识体系如图1.1:
View 知识点结构体系
图1.1View 知识点结构体系
在开发过程中自定义View用的最多,只要懂了View 的绘图原理即可进行相关自定义View的操作实践

二:View的绘制原理


在大部分介绍View的技术类文章中主要介绍的即onMeasure,onLayout和onDraw三个方法,因为此三个方法即View绘制原理的体现,在开始介绍之前,需要先补充说下View的三个方法是重点,但是很多介绍性文章从一开始就介绍此三个方法,让人会感觉很突兀,因此本文介绍这三个方法前会先介绍一些准备知识,这些准备知识属于上面View体系中的View零散知识点,完了会单独一篇介绍这些零散知识点,供需要时查看。


Activity在启动时需要加载当前的view,view在代码中以xml文件的形式位于/res/layout 下面,当activity启动,通过setContentView来加载对应的布局,此时进入activity的生命周期中,同时也进入了View 的生命周期中,但是在Android中一般不会说View的生命周期,所谓View的生命周期指View从xml文件到手机屏幕上的展示的内容,这个过程和Activity不是在同一进程当中,即View的三大过程所属线程和Activity 的UI线程不是同一个,View真正开始绘制是从Activity的onResume方法开始的,而在onCreate 方法中执行完毕setContentView之后只是执行了了View的onFinishInflate 方法,具体流程如图2.1所示:
view和activity生命周期
图2.1 view和activity生命周期执行顺序流程图
根据代码将Log打印日志图贴上供大家参考如2.2到2.4所示:
view为Visible时view相关方法和activity生命周期
图2.3 view为visible时的日志信息
view为invisible时view相关方法和activity生命周期
图2.4 view为invisible时的日志信息
view为gone时view相关方法和activity生命周期
图2.4 view为gone时的日志信息
三:View的三大方法
View的三大方法完成了整个视图从无到有的整个过程,分别具有不同的任务,从整体而言onMeasure方法的工作是测量宽和高,onLayout的工作是放置view的,onDraw作用是将整个视图绘制出来。

3.1 onMeasure

onMeasure方法在View的绘制过程中是第一步,作用为测量,此处有几个重要参数需要理解:
(1):MeasureSpec:测量规格,是一个int值,前2位为测量模式,后30位为测量数值
(2):UPSPECIFIED : 父容器对于子容器没有任何限制,子容器想要多大就多大
(3):EXACTLY: 父容器已经为子容器设置了尺寸,子容器应当服从这些边界,不论子容器想要多大的空间。
(4):AT_MOST:子容器可以是声明大小内的任意大小

3.2 onLayout

3.3 onDraw

参考博客:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值