From d9ac3caf8585dfc0f9a6d584e5031883c6e02984 Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Mon, 10 Apr 2023 13:54:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=88=86=E9=87=9D=E3=80=81?= =?UTF-8?q?=E6=99=82=E9=87=9D=E9=95=B7=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ray650128/iosclockwidget/IOSClockView.kt | 45 ++++++++++--------- app/src/main/res/drawable/img_hour_hand.xml | 8 ++-- app/src/main/res/drawable/img_minute_hand.xml | 8 ++-- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/ray650128/iosclockwidget/IOSClockView.kt b/app/src/main/java/com/ray650128/iosclockwidget/IOSClockView.kt index 650310a..0b1f7f5 100644 --- a/app/src/main/java/com/ray650128/iosclockwidget/IOSClockView.kt +++ b/app/src/main/java/com/ray650128/iosclockwidget/IOSClockView.kt @@ -105,7 +105,7 @@ class IOSClockView: View { drawScaleHourHand(canvas, 12) - postInvalidateDelayed(100) + postInvalidateDelayed(30) } private fun drawClockFace(canvas: Canvas?) { @@ -157,10 +157,11 @@ class IOSClockView: View { val hour = calendar[Calendar.HOUR] val minute = calendar[Calendar.MINUTE] val second = calendar[Calendar.SECOND] + val millisecond = calendar[Calendar.MILLISECOND] // 計算時、分、秒的旋轉角度 val angleHour = (hour + minute.toFloat() / 60) * 360 / 12 val angleMinute = (minute + second.toFloat() / 60) * 360 / 60 - val angleSecond = second * 360 / 60 + val angleSecond = ((second + (millisecond / 1000f)) * 360f / 60f) //region 繪製時針 canvas?.save() @@ -168,27 +169,27 @@ class IOSClockView: View { canvas?.rotate(angleHour, centerX, centerY) // 繪製時針1 val rectHour = RectF( - centerX - 10f / 2, - centerY - radius / 2, - centerX + 10f / 2, + centerX - (width * 0.02f) / 2, + centerY - radius / 1.75f, + centerX + (width * 0.02f) / 2, centerY - radius / 6 ) // 設定時針畫筆屬性 mPaint.color = Color.BLACK - mPaint.style = Paint.Style.STROKE + mPaint.style = Paint.Style.FILL_AND_STROKE mPaint.strokeWidth = 10f canvas?.drawRoundRect(rectHour, mPointRange, mPointRange, mPaint) // 繪製時針2 val rectHour2 = RectF( - centerX - 10f / 2, - centerY - radius / 2, - centerX + 10f / 2, + centerX - (width * 0.01f) / 2, + centerY - radius / 1.75f, + centerX + (width * 0.01f) / 2, centerY ) // 設定時針畫筆屬性 mPaint.color = Color.BLACK - mPaint.style = Paint.Style.FILL + mPaint.style = Paint.Style.FILL_AND_STROKE mPaint.strokeWidth = 5f canvas?.drawRoundRect(rectHour2, mPointRange, mPointRange, mPaint) canvas?.restore() @@ -200,26 +201,26 @@ class IOSClockView: View { // 旋轉到分針的角度 canvas?.rotate(angleMinute, centerX, centerY) val rectMinute = RectF( - centerX - 10f / 2, - centerY - radius * 3.5f / 5, - centerX + 10f / 2, + centerX - (width * 0.02f) / 2, + centerY - radius + 20f, + centerX + (width * 0.02f) / 2, centerY - radius / 6 ) // 設定分針畫筆屬性 mPaint.color = Color.BLACK - mPaint.style = Paint.Style.STROKE + mPaint.style = Paint.Style.FILL_AND_STROKE mPaint.strokeWidth = 10f canvas?.drawRoundRect(rectMinute, mPointRange, mPointRange, mPaint) val rectMinute2 = RectF( - centerX - 10f / 2, - centerY - radius * 3.5f / 5, - centerX + 10f / 2, + centerX - (width * 0.01f) / 2, + centerY - radius + 20f, + centerX + (width * 0.01f) / 2, centerY ) // 設定分針畫筆屬性 mPaint.color = Color.BLACK - mPaint.style = Paint.Style.FILL + mPaint.style = Paint.Style.FILL_AND_STROKE mPaint.strokeWidth = 5f canvas?.drawRoundRect(rectMinute2, mPointRange, mPointRange, mPaint) canvas?.restore() @@ -233,16 +234,16 @@ class IOSClockView: View { // 繪製秒針 canvas?.save() // 旋轉到分針的角度 - canvas?.rotate(angleSecond.toFloat(), centerX, centerY) + canvas?.rotate(angleSecond, centerX, centerY) val rectSecond = RectF( - centerX - 5f / 2, + centerX - (width * 0.005f) / 2, centerY - radius + 20, - centerX + 5f / 2, + centerX + (width * 0.005f) / 2, centerY + radius / 6 ) // 設定秒針畫筆屬性 mPaint.strokeWidth = 5f - mPaint.style = Paint.Style.STROKE + mPaint.style = Paint.Style.FILL_AND_STROKE mPaint.color = Color.parseColor("#FF7F27") canvas?.drawRoundRect(rectSecond, mPointRange, mPointRange, mPaint) canvas?.restore() diff --git a/app/src/main/res/drawable/img_hour_hand.xml b/app/src/main/res/drawable/img_hour_hand.xml index 4167d96..76d6964 100644 --- a/app/src/main/res/drawable/img_hour_hand.xml +++ b/app/src/main/res/drawable/img_hour_hand.xml @@ -1,7 +1,7 @@ + android:height="200dp"> @@ -9,7 +9,7 @@ @@ -20,7 +20,7 @@ @@ -32,7 +32,7 @@ + android:top="92.5dp"> diff --git a/app/src/main/res/drawable/img_minute_hand.xml b/app/src/main/res/drawable/img_minute_hand.xml index f9df070..df03742 100644 --- a/app/src/main/res/drawable/img_minute_hand.xml +++ b/app/src/main/res/drawable/img_minute_hand.xml @@ -1,7 +1,7 @@ + android:height="295dp"> @@ -9,7 +9,7 @@ @@ -20,7 +20,7 @@ @@ -32,7 +32,7 @@ + android:top="140dp">