当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义View来满足这些特殊的组件需求。
一、概述
很多初入Android开发的程序员,对于Android自定义View可能比较恐惧,但这又是高手进阶的必经之路,这里先不做过多学习,只是简单了解。关于高阶的内容会在后续课程陆续进行学习,欢迎关注分享达人秀(ShareExpert)获取第一手教程。
如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种:自绘控件、组合控件、以及继承控件。
-
自绘控件:内容都是开发者自己绘制出来的,一般在View的onDraw方法中完成绘制。
-
组合控件:就是将一些小的控件组合起来形成一个新的控件,这些小的控件多是系统自带的控件。比如很多应用中普遍使用的标题栏控件,其实用的就是组合控件。
-
继承控件:继承已有的控件,创建新控件,保留继承的父控件的特性,并且还可以引入新特性。
二、方法
介于目前掌握的Android基础知识较为薄弱,本节先简单学习一下自绘控件。首先定义一个继承View基类的子类,然后重写View 类的一个或多个方法。通常可以被用户重写的方法如下。
-
构造器:重写构造器是定制View的最基本方式,当Java代码创建一个View实例,或根据XML布局文件加载并构建界面时将需要调用该构造器。
-
onFinishInflate():这是一个回调方法,当应用从XML布局文件加载该组件并利用它 来构建界面之后,该方法将会被回调。
-
onMeasure(int, int):调用该方法来检测View组件及其所包含的所有子组件的大小。
-
onLayout(boolean, int, int, int, int):当该组件需要分配其子组件的位置、大小时,该方法就会被回调。
-
onSizeChanged(int, int, int, int):当该组件的大小被改变时回调该方法。
-
onDraw(Canvas):当该组件将要绘制它的内容时回调该方法进行绘制。
-
onKeyDown(int, KeyEvent):当某个键被按下时触发该方法。
-
onKeyUp(int, KeyEvent):当松开某个键时触发该方法。
-
onTrackballEvent(MotionEvent):当发生轨迹球事件时触发该方法。
-
onTouchEvent(MotionEvent):当发生触