logo头像

勤求古训,博采众方

理解Android自定义View

本文于 2926 天之前发表,文中内容可能已经过时。

面对Android机型碎片化系统自带的控件往往无法满足开发的需求,学习掌握自定义View的实现过程与原理,提高自身开发水平与增加了对android中view模块的理解。

几个重要概念介绍

  • 坐标系与View的位置模型概述
    屏幕的左上角为原点,沿上屏幕边线为X轴,沿左屏幕边线为Y轴
    View在坐标系的位置产生了四个具体距离值,即left,right,top,bottom
  • ViewGroup与View概述
    ViewGroup继承自View,View是构成基本布局的用户界面组件,它在屏幕中占据一块矩形区域并负责绘制与事件处理。
    ViewGroup是容器,它的中间可以存放View并控制内部View的摆放。
    View是控件,可以创建自定义控件或者系统提供的控件进行页面布局。
  • 测量模式概述
    3中测量模式:
    EXACTLY:表示设置了精确的值,一般当childView设置其宽、高为精确值、match_parent时,ViewGroup会将其设置为EXACTLY;

AT_MOST:表示子布局被限制在一个最大值内,一般当childView设置其宽、高为wrap_content时,ViewGroup会将其设置为AT_MOST;

UNSPECIFIED:表示子布局想要多大就多大,一般出现在AadapterView的item的heightMode中、ScrollView的childView的heightMode中;此种模式比较少见。

3个重要方法onMeasure().onLayout(),onDraw()

onMeasure()方法用来测量子视图及其所有子项的大小
onLayout()方法当确定View大小时,根据top,left,bottom,right四个值摆放控件位置
onDraw()方法使用画笔绘制视图,呈现其内容

自定义View

实现一个指定半径的圆

实现一个线性横向布局的ViewGroup