自定义button 的 字体绘制,按下状态图片变换

来源:互联网 发布:微星风扇控制软件 编辑:程序博客网 时间:2024/05/08 11:57

继承Button类

public  int TEXT_SIZE = 20; // 字体大小
public  int sFontMetricsOffsetY = 0;
private int mTextLeftX = 0;

/**

* 重写绘图方法,绘入字体
*/
@Override
protected void onDraw(Canvas canvas) {


TEXT_SIZE = mButton.getTextSize();
setTextColor(mButton.getTextColor(), paint);
paint.setTextSize(TEXT_SIZE);

FontMetrics fontMetrics = paint.getFontMetrics();
int fontHeight = (int) Math.ceil(fontMetrics.bottom - fontMetrics.top);
sFontMetricsOffsetY = (fontHeight - TEXT_SIZE) >> 1; // 右移一位 (/2)
if (mButton.getText() != null && mButton.getWidth() != 0) {
int width = (int) paint.measureText(mButton.getText());
mTextLeftX = mButton.getWidth() - width;
mTextLeftX >>= 1;
}


if (mButton.getText() != null && mButton.getText() != "") {
canvas.drawText(mButton.getText(), mTextLeftX, ((mButton
.getHeight() + TEXT_SIZE) >> 1)
- sFontMetricsOffsetY, paint);
}


super.onDraw(canvas);

}


@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (!bgType.equals(mButton.getType())) {
setBackgroundDrawable(new BitmapDrawable(mImageDown));
}
break;
case MotionEvent.ACTION_UP:
setBackgroundDrawable(new BitmapDrawable(mImage));
break;
default:
break;
}
return super.onTouchEvent(event);
}

原创粉丝点击