前言
作为一名有创新意思的开发人员,你迟早会发现内置的控件会满足不了你的想象力。
拥有扩展已存在的视图、组建复合的控件以及创建独特的新视图能力,可以创建出最适合自己应用程序工作流的有优美用户界面,让用户得到最优的体验。
创建新视图的最佳方法和希望达到的目标有关:
1.如果现有控件已经可以满足希望实现的基本功能,那么只需对现有控件的外观或行为进行修改或扩展即可。通过重写事件处理程序和onDraw()方法。
2.可以通过组合多个视图来创建不可分割的、可重用的控件,从而使它可以综合使用过个相关联的视图功能,比如一键清空TextView组合控件。
3.创建一个全新的控件。
下面我们通过一个小实例,创建一个罗盘界面来体验一下如何自定义控件。
一.创建自定义控件类Compass,继承View:
package com.example.compass;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
public class Compass extends View {
private Paint makerPaint;
private Paint textPaint;
private Paint circlePaint;
private String north, south, east, west;
private int textHeight;
public Compass(Context context) {
super(context);
initCompassView();
}
public Compass(Context context, AttributeSet attrs) {
super(context, attrs);
initCompassView();
}
public Compass(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initCompass