安卓Android自定义控件之自定义时钟
来源:互联网 发布:5s是否支持4g网络 编辑:程序博客网 时间:2024/05/01 10:34
源码地址: https://github.com/senonwx/CustomClock.git
作出的效果
贴出核心代码
1.绘制表盘
private void drawCircle(Canvas canvas) { mPaint.setStyle(Paint.Style.STROKE); canvas.drawCircle(width/2,height/2,width/2-padding,mPaint);}2.绘制刻度
private void drawScale(Canvas canvas){ mPaint.setStyle(Paint.Style.FILL); for (int i = 0; i < 12; i++) { if(i % 3 == 0) canvas.drawLine(width/2,padding,height/2,padding+4+20,mPaint); else canvas.drawLine(width/2,padding,height/2,padding+4+10,mPaint); canvas.rotate(30,width/2,height/2); } }3.绘制指针
private void drawPointer(Canvas canvas){ mCalendar = Calendar.getInstance(); mHour = mCalendar.get(Calendar.HOUR); mMinute = mCalendar.get(Calendar.MINUTE); mSecond = mCalendar.get(Calendar.SECOND); //时针 mDegrees = mHour * 30 + mMinute / 2; mPaint.setColor(Color.BLACK); mPaint.setStrokeWidth(6); canvas.save(); canvas.rotate(mDegrees,width/2,height/2); canvas.drawLine(width/2,height/2,width/2,height/2-mHourLine,mPaint); canvas.restore(); //分针 mPaint.setColor(Color.GRAY); mPaint.setStrokeWidth(4); mDegrees = mMinute * 6 + mSecond / 10; canvas.save(); canvas.rotate(mDegrees,width/2,height/2); canvas.drawLine(width/2,height/2,width/2,height/2-mMinuateLine,mPaint); canvas.restore(); //秒针 mPaint.setStrokeWidth(2); mPaint.setColor(Color.GREEN); mDegrees = mSecond * 6; canvas.save(); canvas.rotate(mDegrees,width/2,width/2); canvas.drawLine(width/2,height/2,width/2,height/2-mSecondLine,mPaint); canvas.restore(); mPaint.setColor(Color.BLACK); }4.绘制文字
private void drawStr(Canvas canvas){ mPaint.setTextSize(40); StringBuffer sb = new StringBuffer(); if(mHour<10){ sb.append("0").append(String.valueOf(mHour)).append(":"); }else{ sb.append(String.valueOf(mHour)).append(":"); } if(mMinute<10){ sb.append("0").append(String.valueOf(mMinute)).append(":"); }else{ sb.append(String.valueOf(mMinute)).append(":"); } if(mSecond<10){ sb.append("0").append(String.valueOf(mSecond)); }else{ sb.append(String.valueOf(mSecond)); } String time = sb.toString(); int strW = (int) mPaint.measureText(time); canvas.drawText(time,width/2-strW/2,height/2+60,mPaint); }5.实现指针转动
private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); invalidate(); } };
@Override protected void onDraw(Canvas canvas) { drawCircle(canvas); drawScale(canvas); drawPointer(canvas); drawStr(canvas); mHandler.sendEmptyMessage(0); }源码地址在最上方哦!!!
1 0
- 安卓Android自定义控件之自定义时钟
- 自定义控件之时钟
- android 自定义时钟控件
- Android自定义控件:时钟
- android自定义时钟控件
- Android自定义时钟控件
- Android自定义控件之ClockView时钟效果
- Android 自定义View之: 时钟控件
- 安卓Android自定义控件:200行代码实现一个简约时钟
- 自定义Android电子时钟控件
- Android自定义控件实现时钟
- Android 自定义模拟时钟控件
- Android自定义View之组合控件 ---- LED数字时钟
- WPF自定义控件之时钟控件Clock
- 自定义安卓控件
- 安卓----自定义控件
- 安卓自定义控件
- 安卓自定义控件
- Win系统svchost进程流量偷跑,如何永久杜绝?
- android:configChanges="keyboardHidden|orientation" 无效
- R语言ggplot2饼状图
- 文章标题:Android常见控件ImageView的使用方法
- ViewPager实现自动轮播效果
- 安卓Android自定义控件之自定义时钟
- SAX与DOM
- 三、Spring4的新功能和增强
- 2.2 常量和变量
- Java多线程 之 类锁与对象锁
- 【LeetCode】461.Hamming Distance_EASY(一)
- vs2010配置安装使用log4cplus日志系统
- bus_register(待续)
- Gitlab官方对数据删除事件的详细说明