日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 画闹钟

發布時間:2024/3/13 Android 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 画闹钟 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.今天就來模仿一下這個小鬧鐘的

?

2.思路:

  • 先畫鬧鐘的圓盤 ,在通過Path來畫指針
  • 兩個耳朵其實就是用兩個圓被一個大圓截取后留下的,并旋轉一定度數后生成

3.直接上代碼:

  

1 public class AlarmClockView extends View { 2 3 private static final PorterDuff.Mode MODE = PorterDuff.Mode.DST_OUT; 4 /** 5 * 屏幕適應性參數 6 */ 7 private static final float BIG_RADIU = 1 / 6F; 8 private static final float SMALL_RADIU = 1 / 12F; 9 private static final float CLOCKWISE_LENGTH = 1 / 10F; 10 private static final float MINUTE_LENGTH = 1 / 12f; 11 private static final float MASK_RADIU = 1 / 4F; 12 13 // 大圓盤圈 14 private Paint mPaint; 15 // 指針Paint 16 private Paint zhenPaint; 17 // 小圓Paint 18 private Paint smallCirclePaint; 19 private Path path; 20 private int screenW, screenH; 21 /** 22 * 大圓半徑 23 * 24 * @param context 25 */ 26 private float radius_big, small_radiu, clockwise_length, minute_length, 27 mask_radiu; 28 29 public AlarmClockView(Context context) { 30 super(context); 31 } 32 33 public AlarmClockView(Context context, AttributeSet attrs) { 34 super(context, attrs); 35 36 mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 37 mPaint.setStyle(Paint.Style.STROKE); 38 mPaint.setColor(Color.WHITE); 39 mPaint.setStrokeWidth(40); 40 41 zhenPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 42 zhenPaint.setStyle(Paint.Style.STROKE); 43 zhenPaint.setColor(Color.WHITE); 44 zhenPaint.setStrokeWidth(20); 45 46 smallCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 47 smallCirclePaint.setStyle(Paint.Style.FILL); 48 smallCirclePaint.setColor(Color.WHITE); 49 50 screenW = new MeasureUtil().getWindowWidth(context); 51 screenH = new MeasureUtil().getWindowHeigh(context); 52 53 int size = Math.min(screenW, screenH); 54 radius_big = size * BIG_RADIU; 55 small_radiu = size * SMALL_RADIU; 56 clockwise_length = size * CLOCKWISE_LENGTH; 57 minute_length = size * MINUTE_LENGTH; 58 mask_radiu = size * MASK_RADIU; 59 // 設置指針 60 path = new Path(); 61 path.moveTo(screenW / 2, screenH / 2 + 10); 62 path.lineTo(screenW / 2, screenH / 2 - clockwise_length + 10); 63 path.moveTo(screenW / 2 - 10, screenH / 2 + 10); 64 path.lineTo(screenW / 2 + minute_length, screenH / 2 + 10); 65 } 66 67 @Override 68 protected void onDraw(Canvas canvas) { 69 super.onDraw(canvas); 70 canvas.drawColor(Color.argb(255, 255, 128, 103)); 71 72 canvas.drawCircle(screenW / 2, screenH / 2, radius_big, mPaint); 73 canvas.drawPath(path, zhenPaint); 74 75 // 畫耳朵圓 76 drawEarCircle(canvas, 30); 77 drawEarCircle(canvas, -30); 78 79 } 80 81 private void drawEarCircle(Canvas canvas, int degree) { 82 int layerID = canvas.saveLayer(0, 0, screenW, screenH, null, 83 Canvas.ALL_SAVE_FLAG); 84 canvas.rotate(degree, screenW / 2, screenH / 2); 85 canvas.drawCircle(screenW / 2, screenH / 2 - radius_big - small_radiu, 86 small_radiu, smallCirclePaint); 87 // 用一個大圓去遮罩 88 PorterDuffXfermode xfermode = new PorterDuffXfermode(MODE); 89 smallCirclePaint.setXfermode(xfermode); 90 canvas.drawCircle(screenW / 2, screenH / 2, mask_radiu, 91 smallCirclePaint); 92 smallCirclePaint.setXfermode(null); 93 canvas.restoreToCount(layerID); 94 } 95 96 }

4.運行后的效果是:

  

  

?

轉載于:https://www.cnblogs.com/liangstudyhome/p/4403554.html

總結

以上是生活随笔為你收集整理的Android 画闹钟的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。