I just want to know how big my current widget is. I found tons of questions to set the minimum size, but I don\'t want to set it. Instead I want to show that informations which
We can't get widget size from OPTION_APPWIDGET_MAX_WIDTH and OPTION_APPWIDGET_MAX_HEIGHT it will return wrong values.
This solution based on @Zanael answer. And I add delta value because on some device cellSize can be not in minSize and maxSize range.
private fun getWidgetSize(minSize: Int, maxSize: Int, context: Context): Int {
var delta = Int.MAX_VALUE
var lastDeltaRecord = -1
for (i in 1..30) {
val cellSize = convertDpToPx(40f * i, context).toInt() - (30 * i)
if (cellSize in minSize..maxSize) {
return i
}
val deltaMin = abs(minSize - cellSize)
val deltaMax = abs(cellSize - maxSize)
if (delta > deltaMin) {
delta = deltaMin
lastDeltaRecord = i
}
if (delta > deltaMax) {
delta = deltaMax
lastDeltaRecord = i
}
}
return lastDeltaRecord
}
private fun convertDpToPx(sp: Float, context: Context): Float {
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
sp,
context.resources.displayMetrics
)
}