From 91b8284afd4d874c015066e6c7caf8a7bd2a3cb7 Mon Sep 17 00:00:00 2001 From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Date: Sat, 6 Jun 2020 00:16:48 -0400 Subject: [PATCH] Improve widget UI Change widget color when clicked --- .../com/v2ray/ang/receiver/WidgetProvider.kt | 17 +++++++++++++--- .../res/drawable/ic_rounded_corner_grey.xml | 6 ++++++ .../res/drawable/ic_rounded_corner_theme.xml | 6 ++++++ .../app/src/main/res/layout/widget_switch.xml | 20 +++---------------- 4 files changed, 29 insertions(+), 20 deletions(-) create mode 100644 V2rayNG/app/src/main/res/drawable/ic_rounded_corner_grey.xml create mode 100644 V2rayNG/app/src/main/res/drawable/ic_rounded_corner_theme.xml diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt index 9cc1501d..dfda98b9 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt @@ -3,14 +3,13 @@ package com.v2ray.ang.receiver import android.app.PendingIntent import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetProvider +import android.content.ComponentName import android.content.Context import android.content.Intent -import android.os.Bundle import android.widget.RemoteViews import com.v2ray.ang.R import com.v2ray.ang.AppConfig import com.v2ray.ang.util.Utils -import org.jetbrains.anko.toast class WidgetProvider : AppWidgetProvider() { /** @@ -19,11 +18,21 @@ class WidgetProvider : AppWidgetProvider() { override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { super.onUpdate(context, appWidgetManager, appWidgetIds) + val isRunning = Utils.isServiceRun(context, "com.v2ray.ang.service.V2RayVpnService") + updateWidgetBackground(context, appWidgetManager, appWidgetIds, isRunning) + } + + private fun updateWidgetBackground(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray, isRunning: Boolean) { val remoteViews = RemoteViews(context.packageName, R.layout.widget_switch) val intent = Intent(context, WidgetProvider::class.java) intent.setAction(AppConfig.BROADCAST_ACTION_WIDGET_CLICK) val pendingIntent = PendingIntent.getBroadcast(context, R.id.layout_switch, intent, PendingIntent.FLAG_UPDATE_CURRENT) remoteViews.setOnClickPendingIntent(R.id.layout_switch, pendingIntent) + if (isRunning) { + remoteViews.setInt(R.id.layout_switch, "setBackgroundResource", R.drawable.ic_rounded_corner_theme); + } else { + remoteViews.setInt(R.id.layout_switch, "setBackgroundResource", R.drawable.ic_rounded_corner_grey); + } for (appWidgetId in appWidgetIds) { appWidgetManager.updateAppWidget(appWidgetId, remoteViews) @@ -45,7 +54,9 @@ class WidgetProvider : AppWidgetProvider() { // context.toast(R.string.toast_services_start) Utils.startVService(context) } + val manager = AppWidgetManager.getInstance(context) + updateWidgetBackground(context, manager, manager.getAppWidgetIds(ComponentName(context, WidgetProvider::class.java)), + !isRunning); } } - } diff --git a/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_grey.xml b/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_grey.xml new file mode 100644 index 00000000..92f9dc67 --- /dev/null +++ b/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_grey.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_theme.xml b/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_theme.xml new file mode 100644 index 00000000..0463d8bf --- /dev/null +++ b/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_theme.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/layout/widget_switch.xml b/V2rayNG/app/src/main/res/layout/widget_switch.xml index aa5d03ec..5d4ec237 100644 --- a/V2rayNG/app/src/main/res/layout/widget_switch.xml +++ b/V2rayNG/app/src/main/res/layout/widget_switch.xml @@ -1,12 +1,5 @@ - - - - - - + android:padding="10dp" + android:src="@drawable/ic_v" /> \ No newline at end of file