feat: rounded corners compat
This commit is contained in:
parent
f177e2cf7c
commit
954fdde1c4
3 changed files with 47 additions and 5 deletions
|
@ -22,8 +22,8 @@ class BitmapUtil {
|
|||
return output
|
||||
}
|
||||
|
||||
fun convertDrawableToBitmap(drawable: Drawable): Bitmap {
|
||||
val bitmap = Bitmap.createBitmap(100, 300, Bitmap.Config.ARGB_8888)
|
||||
fun convertDrawableToBitmap(drawable: Drawable, width: Int, height: Int): Bitmap {
|
||||
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
|
||||
val canvas = Canvas(bitmap)
|
||||
drawable.setBounds(0, 0, canvas.width, canvas.height)
|
||||
drawable.draw(canvas)
|
||||
|
|
40
app/src/main/java/ani/dantotsu/widgets/WidgetSizeProvider.kt
Normal file
40
app/src/main/java/ani/dantotsu/widgets/WidgetSizeProvider.kt
Normal file
|
@ -0,0 +1,40 @@
|
|||
package ani.dantotsu.widgets
|
||||
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.Context
|
||||
|
||||
class WidgetSizeProvider(
|
||||
private val context: Context // Do not pass Application context
|
||||
) {
|
||||
|
||||
private val appWidgetManager = AppWidgetManager.getInstance(context)
|
||||
|
||||
fun getWidgetsSize(widgetId: Int): Pair<Int, Int> {
|
||||
val isPortrait = context.resources.configuration.orientation == 1
|
||||
val width = getWidgetWidth(isPortrait, widgetId)
|
||||
val height = getWidgetHeight(isPortrait, widgetId)
|
||||
val widthInPx = context.dip(width)
|
||||
val heightInPx = context.dip(height)
|
||||
return widthInPx to heightInPx
|
||||
}
|
||||
|
||||
private fun getWidgetWidth(isPortrait: Boolean, widgetId: Int): Int =
|
||||
if (isPortrait) {
|
||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
|
||||
} else {
|
||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)
|
||||
}
|
||||
|
||||
private fun getWidgetHeight(isPortrait: Boolean, widgetId: Int): Int =
|
||||
if (isPortrait) {
|
||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)
|
||||
} else {
|
||||
getWidgetSizeInDp(widgetId, AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
|
||||
}
|
||||
|
||||
private fun getWidgetSizeInDp(widgetId: Int, key: String): Int =
|
||||
appWidgetManager.getAppWidgetOptions(widgetId).getInt(key, 0)
|
||||
|
||||
private fun Context.dip(value: Int): Int = (value * resources.displayMetrics.density).toInt()
|
||||
|
||||
}
|
|
@ -14,6 +14,7 @@ import androidx.core.content.res.ResourcesCompat
|
|||
import ani.dantotsu.MainActivity
|
||||
import ani.dantotsu.R
|
||||
import ani.dantotsu.util.BitmapUtil.Companion.convertDrawableToBitmap
|
||||
import ani.dantotsu.widgets.WidgetSizeProvider
|
||||
|
||||
/**
|
||||
* Implementation of App Widget functionality.
|
||||
|
@ -70,13 +71,16 @@ class UpcomingWidget : AppWidgetProvider() {
|
|||
null
|
||||
) as GradientDrawable
|
||||
gradientDrawable.colors = intArrayOf(backgroundColor, backgroundFade)
|
||||
val widgetSizeProvider = WidgetSizeProvider(context)
|
||||
val (width, height) = widgetSizeProvider.getWidgetsSize(appWidgetId)
|
||||
gradientDrawable.cornerRadius = 50f
|
||||
|
||||
val intentTemplate = Intent(context, MainActivity::class.java)
|
||||
intentTemplate.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||||
intentTemplate.putExtra("fromWidget", true)
|
||||
|
||||
val views = RemoteViews(context.packageName, R.layout.upcoming_widget).apply {
|
||||
setImageViewBitmap(R.id.backgroundView, convertDrawableToBitmap(gradientDrawable))
|
||||
setImageViewBitmap(R.id.backgroundView, convertDrawableToBitmap(gradientDrawable, width, height))
|
||||
setTextColor(R.id.text_show_title, titleTextColor)
|
||||
setTextColor(R.id.text_show_countdown, countdownTextColor)
|
||||
setTextColor(R.id.widgetTitle, titleTextColor)
|
||||
|
@ -103,9 +107,7 @@ class UpcomingWidget : AppWidgetProvider() {
|
|||
)
|
||||
)
|
||||
}
|
||||
|
||||
return views
|
||||
|
||||
}
|
||||
|
||||
const val PREFS_NAME = "ani.dantotsu.widgets.UpcomingWidget"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue