GitHub地址
承接上文:Android自定义View绘制时钟(一)
练手第二版,解决问题:
- 表盘数字不居中
- 时分秒联动不平滑
解决问题:
1. 表盘数字不居中
//获取text绘制区域顶部以及底部的拓展值,该拓展值是相对给定坐标的坐标。
float textTop = mPaint.getFontMetrics().top;
float textBottom = mPaint.getFontMetrics().bottom;
...
if(i%3 == 0) {//0、3、6、9
mPaint.setColor(getResources().getColor(android.R.color.black));
canvas.drawText(String.valueOf(num),xNum,yNum-(textTop+textBottom)/2, mPaint);
}
2. 时分秒联动不平滑
while (true) {
//设置指针联动
mProgressSecond +=6;//秒针每秒跳动6度
if(mProgressSecond%60 == 0){
mProgressMin +=1;//秒针每转60度分针跳动1度
if(mProgressMin!=0&&mProgressMin%12 == 0){
mProgressHour += 1;//分针每转12度时针跳动1度
}
}
//设置指针重置
if(mProgressSecond == 360) mProgressSecond = 0;
if(mProgressMin == 360) mProgressMin = 0;
if(mProgressHour == 360) mProgressHour = 0;
postInvalidate();//刷新view
try {
Thread.sleep(1000);//每秒循环一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}
未解决问题:
变幻色!