From a556edb643d80186a4c24720cc4ff33f1c3b4b60 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Mon, 20 Jun 2022 03:42:52 -0400 Subject: [PATCH] custom attributes, update StatValue Circularprogressview bar colors using custom attributes, StatValue more kotliny --- .../habitica/ui/views/CircularProgressView.kt | 4 +- .../wearos/habitica/ui/views/StatValue.kt | 50 ++++--------------- wearos/src/main/res/layout/activity_stats.xml | 24 ++++----- .../src/main/res/layout/stat_value_layout.xml | 10 ++-- 4 files changed, 31 insertions(+), 57 deletions(-) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/CircularProgressView.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/CircularProgressView.kt index 46c2daa56..f48981fce 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/CircularProgressView.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/CircularProgressView.kt @@ -76,7 +76,7 @@ class CircularProgressView( } private fun drawInnerArc(canvas: Canvas) { - val percentageToFill = getCurrentPercentageToFill() + val percentageToFill = getCurrentAngleToFill() canvas.drawArc(ovalSpace, 270f, percentageToFill, false, fillArcPaint) } @@ -122,6 +122,6 @@ class CircularProgressView( const val PERCENTAGE_VALUE_HOLDER = "percentage" } - private fun getCurrentPercentageToFill() = if(currentPercentage > 0) {(ARC_FULL_ROTATION_DEGREE.toFloat() * (currentPercentage.toFloat() / PERCENTAGE_DIVIDER.toFloat()))} else {1f} + private fun getCurrentAngleToFill() = if(currentPercentage > 0) {(ARC_FULL_ROTATION_DEGREE.toFloat() * (currentPercentage.toFloat() / PERCENTAGE_DIVIDER.toFloat()))} else {1f} } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/StatValue.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/StatValue.kt index 0ad57af67..ac8b04ba6 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/StatValue.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/views/StatValue.kt @@ -4,55 +4,27 @@ import android.content.Context import android.graphics.Bitmap import android.graphics.Color import android.util.AttributeSet -import android.view.View -import android.widget.FrameLayout -import android.widget.ImageView -import android.widget.TextView -import com.habitrpg.android.habitica.R -import com.habitrpg.common.habitica.views.HabiticaIconsHelper.init +import androidx.constraintlayout.widget.ConstraintLayout +import com.habitrpg.android.habitica.databinding.StatValueLayoutBinding +import com.habitrpg.common.habitica.extensions.layoutInflater -class StatValue : FrameLayout { - - var view: View? = null - var bitmapImageView: ImageView? = null - var currentValueTextView: TextView? = null - var maxValueTextView: TextView? = null - - constructor(context: Context) : super(context) { - init(context) - } - - constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { - init(context) - } - - constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super( +class StatValue @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) : + ConstraintLayout( context, attrs, defStyle ) { - init(context) - } - init { - initView() - } - - private fun initView() { - view = inflate(context, R.layout.stat_value_layout, this) - bitmapImageView = view?.findViewById(R.id.bitmap) - currentValueTextView = view?.findViewById(R.id.current_value) - maxValueTextView = view?.findViewById(R.id.max_value) - } + var binding = StatValueLayoutBinding.inflate(context.layoutInflater, this) fun setStatValue(maxValue: Int, currentValue: Int, bitmap: Bitmap, bitmapColor: Int) { - bitmapImageView?.setImageBitmap(bitmap) - currentValueTextView?.text = currentValue.toString() - currentValueTextView?.setTextColor( + binding.bitmap.setImageBitmap(bitmap) + binding.currentValue.text = currentValue.toString() + binding.currentValue.setTextColor( context?.resources?.getColor(bitmapColor, null) ?: Color.WHITE ) - maxValueTextView?.text = "/$maxValue" - view?.invalidate() + binding.maxValue.text = "/$maxValue" + invalidate() } diff --git a/wearos/src/main/res/layout/activity_stats.xml b/wearos/src/main/res/layout/activity_stats.xml index c8a94d601..81d303763 100644 --- a/wearos/src/main/res/layout/activity_stats.xml +++ b/wearos/src/main/res/layout/activity_stats.xml @@ -1,53 +1,53 @@ + android:layout_height="match_parent"> + app:offset="10" /> + app:offset="28" /> + app:offset="46" /> diff --git a/wearos/src/main/res/layout/stat_value_layout.xml b/wearos/src/main/res/layout/stat_value_layout.xml index 4f875e4cb..ba6196678 100644 --- a/wearos/src/main/res/layout/stat_value_layout.xml +++ b/wearos/src/main/res/layout/stat_value_layout.xml @@ -1,10 +1,12 @@ - + tools:parentTag="com.habitrpg.wearos.habitica.ui.views.StatValue"> - \ No newline at end of file + \ No newline at end of file