介绍
这篇文章将为大家详细讲解有关怎么在Android中通过自定义控件实现时钟功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
<>强自定义控件的代码(ClockView。java): 强>
package com.example.clock; import java.util.Calendar; import java.util.Date; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import handler; import android.os.Looper; import android.os.Message; import android.util.AttributeSet; import android.view.View; public class  ClockView extends View  { private 才能Paint circlePaint, dialPaint,, numberPaint;//才能,view 的宽高 private 才能float mWidth, mHeight;//才能,圆的半径 private 才能;float  circleRadius;//,才能圆心X, Y坐标 private 才能float circleX, circleY; private 才能;int 第二,,一分钟; private 才能double 小时; private 才能Handler Handler =, new 处理程序(Looper.getMainLooper ()), { ,,@Override ,,,public void handleMessage (Message 味精),{ ,,,,,super.handleMessage(味精); ,,,,,if (msg.what ==, 0), { ,,,,,,,invalidate (); ,,,,,} ,,,} ,,}; public 才能;ClockView (Context 上下文,AttributeSet attrs), { ,,,超级(上下文,attrs); ,,,initPaint (); ,,} private 才能;void  initPaint (), { ,,,//,刻盘圆,小时刻度,时针和分针的画笔 ,,,circlePaint =, new 油漆(Paint.ANTI_ALIAS_FLAG); ,,,circlePaint.setColor (Color.BLACK); ,,,circlePaint.setStyle (Paint.Style.STROKE); ,,,circlePaint.setStrokeWidth (10); ,,,//,分钟刻度的画笔 ,,,dialPaint =, new 油漆(Paint.ANTI_ALIAS_FLAG); ,,,dialPaint.setColor (Color.BLACK); ,,,dialPaint.setStrokeWidth (5); ,,,//,数字的画笔 ,,,numberPaint =, new 油漆(Paint.ANTI_ALIAS_FLAG); ,,,numberPaint.setColor (Color.BLACK); ,,,numberPaint.setStrokeWidth (5); ,,,numberPaint.setTextSize (30); ,,} @Override才能 protected 才能;void  onMeasure (int widthMeasureSpec, int heightMeasureSpec), { ,,,super.onMeasure (heightMeasureSpec widthMeasureSpec也); ,,,mWidth =, getMeasuredWidth (); ,,,mHeight =, getMeasuredHeight (); ,,,if (mWidth & lt;, mHeight), { ,,,,,//,圆的半径为视图的宽度的一半再减9,防止贴边 ,,,,,circleRadius =, mWidth /, 2,安康;9; ,,,,,circleX =, mWidth /, 2; ,,,,,circleY =, mHeight /, 2; ,,,},{else ,,,,,circleRadius =, mHeight /, 2,安康;9; ,,,,,circleX =, mWidth /, 2; ,,,,,circleY =, mHeight /, 2; ,,,} ,,} @Override才能 protected 才能;void  onDraw (Canvas 画布),{ ,,,super.onDraw(画布); ,,,凝固时间(); ,,,drawCirclePoint(画布); ,,,drawCircle(画布); ,,,drawDial(画布); ,,,drawPointer(画布); ,,} ,/* * ,,*,圆的心 ,,*, ,,*,@param 画布 ,,*/private 才能;void  drawCirclePoint (Canvas 画布),{ ,,,canvas.drawCircle (circleX, circleY,, 5日,circlePaint); ,,} private 才能;void  drawCircle (Canvas 画布),{ ,,,canvas.drawCircle (circleY, circleX,还以为,circleRadius, circlePaint); ,,} ,/* * ,,*,画刻度及时间 ,,*, ,,*,@param 画布 ,,*/private 才能;void  drawDial (Canvas 画布),{ ,,,//,时钟用长一点的刻度,画笔用画圆的画笔 ,,,Point hourStartPoint =, new 点(circleX, circleY 作用;circleRadius); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null怎么在Android中通过自定义控件实现时钟功能