diff --git a/CHANGELOG.md b/CHANGELOG.md index c584353fa..b6dfbc8b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixed - Improve automatic checkmarks for monthly habits (@iSoron, 947) - Fix small theme issues (@iSoron) +- Fix ANR on some Samsung phones (@iSoron, #962) ## [2.0.2] - 2021-05-23 diff --git a/uhabits-android/src/main/java/org/isoron/platform/gui/AndroidCanvas.kt b/uhabits-android/src/main/java/org/isoron/platform/gui/AndroidCanvas.kt index b4ff1d5e5..ae1d1f52f 100644 --- a/uhabits-android/src/main/java/org/isoron/platform/gui/AndroidCanvas.kt +++ b/uhabits-android/src/main/java/org/isoron/platform/gui/AndroidCanvas.kt @@ -36,6 +36,7 @@ class AndroidCanvas : Canvas { var innerDensity = 1.0 var innerWidth = 0 var innerHeight = 0 + var mHeight = 15 var paint = Paint().apply { isAntiAlias = true @@ -64,11 +65,10 @@ class AndroidCanvas : Canvas { } override fun drawText(text: String, x: Double, y: Double) { - textPaint.getTextBounds(text, 0, text.length, textBounds) innerCanvas.drawText( text, x.toDp(), - y.toDp() - textBounds.exactCenterY(), + y.toDp() + 0.6f * mHeight, textPaint, ) } @@ -126,10 +126,17 @@ class AndroidCanvas : Canvas { Font.BOLD -> Typeface.DEFAULT_BOLD Font.FONT_AWESOME -> getFontAwesome(context) } + updateMHeight() } override fun setFontSize(size: Double) { textPaint.textSize = size.toDp() + updateMHeight() + } + + private fun updateMHeight() { + textPaint.getTextBounds("m", 0, 1, textBounds) + mHeight = textBounds.height() } override fun setStrokeWidth(size: Double) { diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/HabitPickerDialog.kt b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/HabitPickerDialog.kt index f23394369..ff743816b 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/HabitPickerDialog.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/HabitPickerDialog.kt @@ -65,7 +65,6 @@ open class HabitPickerDialog : Activity() { widgetUpdater = component.widgetUpdater widgetId = intent.extras?.getInt(EXTRA_APPWIDGET_ID, INVALID_APPWIDGET_ID) ?: 0 - val habitIds = ArrayList() val habitNames = ArrayList() for (h in habitList) {