From 3bba75ff50a58a81285a35421407da8e2df756bc Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Fri, 22 Apr 2016 15:36:39 -0400 Subject: [PATCH] Add ripple effect to check mark widget --- .../uhabits/widgets/BaseWidgetProvider.java | 26 +++++++++++-- .../drawable-v21/widget_button_background.xml | 39 +++++++++++++++++++ .../res/drawable/widget_button_background.xml | 34 ++++++++++++++++ app/src/main/res/layout/widget_checkmark.xml | 19 +++++++-- .../res/layout/widget_checkmark_inner.xml | 3 +- 5 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 app/src/main/res/drawable-v21/widget_button_background.xml create mode 100644 app/src/main/res/drawable/widget_button_background.xml diff --git a/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java index f2ea24c1e..cb6097c01 100644 --- a/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java +++ b/app/src/main/java/org/isoron/uhabits/widgets/BaseWidgetProvider.java @@ -254,8 +254,8 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider { try { - buildRemoteViews(portraitWidgetView, portraitRemoteViews); - buildRemoteViews(landscapeWidgetView, landscapeRemoteViews); + buildRemoteViews(portraitWidgetView, portraitRemoteViews, portraitWidth, portraitHeight); + buildRemoteViews(landscapeWidgetView, landscapeRemoteViews, landscapeWidth, landscapeHeight); updateAppWidget(); } catch (Exception e) @@ -267,7 +267,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider super.onPostExecute(aVoid); } - private void buildRemoteViews(View widgetView, RemoteViews remoteViews) + private void buildRemoteViews(View widgetView, RemoteViews remoteViews, int width, int height) { widgetView.invalidate(); widgetView.setDrawingCacheEnabled(true); @@ -276,11 +276,29 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider remoteViews.setTextViewText(R.id.label, habit.name); remoteViews.setImageViewBitmap(R.id.imageView, drawingCache); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) + { + int imageWidth = widgetView.getMeasuredWidth(); + int imageHeight = widgetView.getMeasuredHeight(); + int p[] = getPadding(width, height, imageWidth, imageHeight); + + remoteViews.setViewPadding(R.id.buttonOverlay, p[0], p[1], p[2], p[3]); + } + //savePreview(context, widgetId, drawingCache); PendingIntent onClickIntent = getOnClickPendingIntent(context, habit); - if (onClickIntent != null) remoteViews.setOnClickPendingIntent(R.id.imageView, + if (onClickIntent != null) remoteViews.setOnClickPendingIntent(R.id.button, onClickIntent); } } + + private int[] getPadding(int entireWidth, int entireHeight, int imageWidth, + int imageHeight) + { + int w = (int) (((float) entireWidth - imageWidth) / 2); + int h = (int) (((float) entireHeight - imageHeight) / 2); + + return new int[]{ w, h, w, h }; + } } diff --git a/app/src/main/res/drawable-v21/widget_button_background.xml b/app/src/main/res/drawable-v21/widget_button_background.xml new file mode 100644 index 000000000..fdeb02bcd --- /dev/null +++ b/app/src/main/res/drawable-v21/widget_button_background.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/widget_button_background.xml b/app/src/main/res/drawable/widget_button_background.xml new file mode 100644 index 000000000..a50eaa160 --- /dev/null +++ b/app/src/main/res/drawable/widget_button_background.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/widget_checkmark.xml b/app/src/main/res/layout/widget_checkmark.xml index e495ff16f..1d739750d 100644 --- a/app/src/main/res/layout/widget_checkmark.xml +++ b/app/src/main/res/layout/widget_checkmark.xml @@ -18,12 +18,11 @@ ~ with this program. If not, see . --> - - \ No newline at end of file + + +