-
Notifications
You must be signed in to change notification settings - Fork 24.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Set rounded rectangle mask on TouchableNativeFeedback's ripples (#25342)
Summary: This commit fixes an issue where ripple touch feedback extends beyond the border radius of a view. ### Before <img src="https://user-images.githubusercontent.com/590904/59892832-9cb19180-938f-11e9-8239-b2d5f0e1ce56.png" width="300" /> ### After <img src="https://user-images.githubusercontent.com/590904/59925227-766e0f00-93ec-11e9-9efe-c41e696f8c3c.gif" width="300" /> ### The fix It achieves this by adding a mask to the RippleDrawable background, collecting that information from two new methods on ReactViewGroup: 1. getBorderRadiusMask() returns a drawable rounded rectangle matching the view's border radius properties 2. getBorderRadius() produces a float[] with the border radius information required to build a RoundedRectShape in getBorderRadiusMask() Additionally, this commit updates setBorderRadius in ReactViewManager to re-apply the background whenever it is set, which is necessary to update the mask on the RippleDrawable background image as the border radius changes. Related issues: #6480 ## Changelog [Android][fixed] - Adding border radius styles to TouchableNative react-native run-android --port <x> correctly connects to dev server and related error messages display the correct port Pull Request resolved: #25342 Test Plan: Link this branch to a new React native project with the following App.js class: ``` import React, { Component } from "react"; import { StyleSheet, Text, View, TouchableNativeFeedback } from "react-native"; export default class App extends Component { render() { const ripple = TouchableNativeFeedback.Ripple("#ff0000"); return ( <View style={styles.container}> <TouchableNativeFeedback background={ripple}> <View style={{ width: 96, borderRadius: 12, borderTopLeftRadius: 10, borderBottomRightRadius: 37, height: 96, alignItems: "center", justifyContent: "center", borderColor: "black", borderWidth: 2 }} > <Text>{"CLICK CLICK"}</Text> </View> </TouchableNativeFeedback> </View> ); } } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", alignItems: "center", backgroundColor: "#F5FCFF" } }); ``` It's important to ensure that updates to border radius are accounted for. I did this by enabling hot module reloading and updating the border radius styles to verify that the ripple remains correct. Reviewed By: cpojer Differential Revision: D16221213 Pulled By: makovkastar fbshipit-source-id: 168379591e79f9eca9d184b1607ebb564c2d83dd
- Loading branch information
1 parent
44163b7
commit 14b455f
Showing
3 changed files
with
142 additions
and
96 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14b455f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi, is this included in the latest release 0.60.5?
14b455f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that was included in the v0.61.0-rc.2 release.
14b455f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i can't seem to find it on the list of commits v0.61.0-rc.2...master
14b455f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to the tags, it's in v0.61.0-rc.0 and above. You wouldn't see it in the list of commits from v0.61.0-rc.2...master.