怎么在Android中通过自定义控件实现时钟功能

  介绍

这篇文章将为大家详细讲解有关怎么在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中通过自定义控件实现时钟功能