From f8ecd4850fa4458686995f5e4fa4bb4067ce8418 Mon Sep 17 00:00:00 2001 From: Jay Aliomer Date: Mon, 19 Oct 2020 14:43:17 -0400 Subject: [PATCH] Implementing the new material ripple Fixes: 167177623 Test: RippleDrawableTest Change-Id: Ic3962760bc9a53c82f66b267bd5aa5006c09fa00 --- core/api/current.txt | 5 + .../res/drawable/btn_borderless_material.xml | 3 +- .../res/res/drawable/btn_colored_material.xml | 3 +- .../res/res/drawable/btn_default_material.xml | 3 +- core/res/res/drawable/btn_toggle_material.xml | 3 +- core/res/res/values/attrs.xml | 7 + core/res/res/values/public.xml | 1 + .../res/res/values/themes_device_defaults.xml | 3 + .../drawable/RippleAnimationSession.java | 284 +++++++++++++++ .../graphics/drawable/RippleDrawable.java | 323 +++++++++++++++++- .../graphics/drawable/RippleShader.java | 89 +++++ libs/hwui/Animator.cpp | 8 +- 12 files changed, 709 insertions(+), 23 deletions(-) create mode 100644 graphics/java/android/graphics/drawable/RippleAnimationSession.java create mode 100644 graphics/java/android/graphics/drawable/RippleShader.java diff --git a/core/api/current.txt b/core/api/current.txt index 9ef3eb462552b..66df78b0f7fb7 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -1185,6 +1185,7 @@ package android { field public static final int right = 16843183; // 0x10101af field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093 field public static final int ringtoneType = 16843257; // 0x10101f9 + field public static final int rippleStyle = 16844337; // 0x1010631 field public static final int rollbackDataPolicy = 16844311; // 0x1010617 field public static final int rotation = 16843558; // 0x1010326 field public static final int rotationAnimation = 16844090; // 0x101053a @@ -16524,9 +16525,13 @@ package android.graphics.drawable { public class RippleDrawable extends android.graphics.drawable.LayerDrawable { ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable); method public int getRadius(); + method public int getRippleStyle(); method public void setColor(android.content.res.ColorStateList); method public void setRadius(int); + method public void setRippleStyle(int) throws java.lang.IllegalArgumentException; field public static final int RADIUS_AUTO = -1; // 0xffffffff + field public static final int STYLE_PATTERNED = 1; // 0x1 + field public static final int STYLE_SOLID = 0; // 0x0 } public class RotateDrawable extends android.graphics.drawable.DrawableWrapper { diff --git a/core/res/res/drawable/btn_borderless_material.xml b/core/res/res/drawable/btn_borderless_material.xml index 08e1060ebad31..1a0912ee47dc9 100644 --- a/core/res/res/drawable/btn_borderless_material.xml +++ b/core/res/res/drawable/btn_borderless_material.xml @@ -15,7 +15,8 @@ --> + android:color="?attr/colorControlHighlight" + android:rippleStyle="?attr/rippleStyle"> diff --git a/core/res/res/drawable/btn_colored_material.xml b/core/res/res/drawable/btn_colored_material.xml index 7ba21e840a597..5274ef2f6dce4 100644 --- a/core/res/res/drawable/btn_colored_material.xml +++ b/core/res/res/drawable/btn_colored_material.xml @@ -19,7 +19,8 @@ android:insetTop="@dimen/button_inset_vertical_material" android:insetRight="@dimen/button_inset_horizontal_material" android:insetBottom="@dimen/button_inset_vertical_material"> - + diff --git a/core/res/res/drawable/btn_default_material.xml b/core/res/res/drawable/btn_default_material.xml index ed2b5aacb2369..6a9e62110ba40 100644 --- a/core/res/res/drawable/btn_default_material.xml +++ b/core/res/res/drawable/btn_default_material.xml @@ -15,6 +15,7 @@ --> + android:color="?attr/colorControlHighlight" + android:rippleStyle="?attr/rippleStyle"> diff --git a/core/res/res/drawable/btn_toggle_material.xml b/core/res/res/drawable/btn_toggle_material.xml index 8b19e4ae3561e..7cee3820172b7 100644 --- a/core/res/res/drawable/btn_toggle_material.xml +++ b/core/res/res/drawable/btn_toggle_material.xml @@ -21,7 +21,8 @@ android:insetBottom="@dimen/button_inset_vertical_material"> - + diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 927a8b49c17e8..67b810e4ebdf5 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -6389,6 +6389,13 @@ + + + + + + + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 278708a26d444..d22bdde2246bb 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3071,6 +3071,7 @@ + diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml index ce4ee87e52a0c..e7e049da18c90 100644 --- a/core/res/res/values/themes_device_defaults.xml +++ b/core/res/res/values/themes_device_defaults.xml @@ -224,6 +224,9 @@ easier. @color/text_color_tertiary_device_default_dark @color/foreground_device_default_dark @color/foreground_device_default_light + + + solid