mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
add ripple config object to Pressable (#28156)
Summary: Motivation is to support ripple radius just like in TouchableNativeFeedback, plus borderless attribute. See https://github.com/facebook/react-native/pull/28009#issuecomment-589489520 In the current form this means user needs to pass an `android_ripple` prop which is an object of this shape: ``` export type RippleConfig = {| color?: ?ColorValue, borderless?: ?boolean, radius?: ?number, |}; ``` Do we want to add methods that would create such config objects - https://facebook.github.io/react-native/docs/touchablenativefeedback#methods ? ## Changelog [Android] [Added] - support borderless and custom ripple radius on Pressable Pull Request resolved: https://github.com/facebook/react-native/pull/28156 Test Plan: Tested locally in RNTester. I noticed that when some content is rendered after the touchables, the ripple effect is "cut off" by the boundaries of the next view. This is not specific to Pressable, it happens to TouchableNativeFeedback too but I just didn't notice it before in https://github.com/facebook/react-native/pull/28009. As it is an issue of its own, I didn't investigate that.  I changed the Touchable example slightly too (I just moved the "custom ripple radius" up to show the "cutting off" issue), so just for completeness:  Reviewed By: yungsters Differential Revision: D20071021 Pulled By: TheSavior fbshipit-source-id: cb553030934205a52dd50a2a8c8a20da6100e23f
This commit is contained in:
committed by
Facebook GitHub Bot
parent
21733641a8
commit
bd3868643d
@@ -69,7 +69,7 @@ public class ReactDrawableHelper {
|
||||
Context context, ReadableMap drawableDescriptionDict) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
||||
throw new JSApplicationIllegalArgumentException(
|
||||
"Ripple drawable is not available on " + "android API <21");
|
||||
"Ripple drawable is not available on android API <21");
|
||||
}
|
||||
int color = getColor(context, drawableDescriptionDict);
|
||||
Drawable mask = getMask(drawableDescriptionDict);
|
||||
@@ -101,7 +101,7 @@ public class ReactDrawableHelper {
|
||||
return context.getResources().getColor(sResolveOutValue.resourceId);
|
||||
} else {
|
||||
throw new JSApplicationIllegalArgumentException(
|
||||
"Attribute colorControlHighlight " + "couldn't be resolved into a drawable");
|
||||
"Attribute colorControlHighlight couldn't be resolved into a drawable");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ public class ReactViewGroup extends ViewGroup
|
||||
|
||||
public void setTranslucentBackgroundDrawable(@Nullable Drawable background) {
|
||||
// it's required to call setBackground to null, as in some of the cases we may set new
|
||||
// background to be a layer drawable that contains a drawable that has been previously setup
|
||||
// background to be a layer drawable that contains a drawable that has been setup
|
||||
// as a background previously. This will not work correctly as the drawable callback logic is
|
||||
// messed up in AOSP
|
||||
updateBackgroundDrawable(null);
|
||||
|
||||
Reference in New Issue
Block a user