最近在练习自定义view,找了一些资料,模仿了一下微信通讯录的实现效果,首先看一下效果图:
记录下来当做笔记以备后用。
第一步:是绘制26个字母的view:
在每个构造方法中调用下面的init()方法实现画笔的初始化
private void init() {
//去掉字母锯齿的参数
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(Color.WHITE);
// mPaint.setTypeface(Typeface.DEFAULT_BOLD);
mPaint.setTextSize(40);//设置字母大小
}
然后是onDraw()方法进行绘制:
@Override
protected void onDraw(Canvas canvas) {
//这里用来绘制背景,当字母被触摸的时候会变成灰色
if (mTouched) {
canvas.drawColor(0x30000000);
}
for (int i = 0; i < letterLength; i++) {
String text = LETTERS[i];
// 计算坐标
int x = (int) (cellWidth / 2.0f - mPaint.measureText(text) / 2.0f);
// 获取文本的高度
Rect bounds = new Rect();// 矩形
mPaint.getTextBounds(text, 0,