Android 的控件自定义有N多的方法, 简单点来总结至少包括
1. 组合控件。(将现有控件组合在你的新控件里,例如一个 ImageView 和 一个 Button 控件)之后总结这种自定义方式的具体使用。
2. 纯手工全新打造,继承自 View 自己重新写 onMeasure 以及 onDraw 函数 ... (好吧,这个家当比较专业,当然是否使用看你自己)
3. 现有原生控件显示改变。(继承自你需要改变的控件,然后修改他的 onDraw 函数)
这次简单点,我介绍方法3的实现:
例如修改TextView控件,给每个TextView显示前添加一个Icon。
1. 首先不罗嗦,继承自TextView。
2. 定义一个初始化函数, new Paint 对象,在 onDraw 函数中使用。(没必要每次都在 onDraw 函数中 new Paint)
3. 重载 onDraw 函数。
细节说明:
1. 继承自 TextView 后,构造函数选择成 public MyTextView(Context context, AttributeSet attrs)
要不使用的时候你会悲剧的
2. 添加成员变量 private Paint mIconPaint; 用来绘制Icon。(当然这里最好自己把平滑参数设置进去,别总是画出毛边)
3. 重载 onDraw 函数。
首先,绘制你的ICON,Canvas 的函数 drawBitmap 应该可以帮助你实现 ICON的绘制。
继续,完成ICON绘制后,(save) 画布, (translate)平移一下画布位置,让 父类 (TextView)完成剩余的绘制动作。
最后, 调用 super.onDraw, 让父类完成 TextView本身的绘制动作, 函数返回前 restore一下画布,你想要的就实现了。
看到这里,如果你想定制原生控件,那么应该有一个小思路了吧,也许以前看书的时候对于各种绘图函数的使用没有
太注意,呵呵,现在可以去复习一下了吧,用到了吧。(留个小问题,自定义控件,如果需要添加XML属性,)
==========================================================================
当然这里的实例,你也可以用组合控件,重新实现, ImageView + TextView 就 OK 了。