Permalink
Browse files

Let LayoutAnimation respect style opacity on Android. Fix issue #11769

Summary:
Fix issue #11769

When a view or text is created with style opacity (e.g. 0.2) and LayoutAnimation is enabled on Android, what we expected to happen is the view or text has opacity (e.g. 0.2).
What actually happens is the view or text's opacity is always 1.

In the following screenshot of the sample app, the odd numbered view/text's opacity should be 0.2. If we create them without LayoutAnimation, everything is good. But when we do with LayoutAnimation, the style opacity is not respected.
![Screenshot](https://github.com/vinceyuan/ReactNativeOpacityBugDemo/raw/master/ReactNativeOpacityBug.gif)

Reproduced on rnplay.org https://rnplay.org/apps/JbdOpQ
The sample project I created: https://github.com/vinceyuan/ReactNativeOpacityBugDemo
You can try my fix on branch fix-react-native-issue-11769 https://github.com/vinceyuan/ReactNativeOpacityBugDemo/tree/fix-react-native-issue-11769
Closes #11770

Differential Revision: D4403096

fbshipit-source-id: 99c6831ab17eae304e09f23dbad387041d933a30
  • Loading branch information...
vinceyuan authored and facebook-github-bot committed Jan 12, 2017
1 parent 4844225 commit 4c08105e14378764942d90c3dfa15886f6d62071
@@ -22,13 +22,16 @@ boolean isValid() {
@Override
Animation createAnimationImpl(View view, int x, int y, int width, int height) {
float fromValue = isReverse() ? 1.0f : 0.0f;
float toValue = isReverse() ? 0.0f : 1.0f;
if (mAnimatedProperty != null) {
switch (mAnimatedProperty) {
case OPACITY:
case OPACITY: {
float fromValue = isReverse() ? view.getAlpha() : 0.0f;
float toValue = isReverse() ? 0.0f : view.getAlpha();
return new OpacityAnimation(view, fromValue, toValue);
case SCALE_XY:
}
case SCALE_XY: {
float fromValue = isReverse() ? 1.0f : 0.0f;
float toValue = isReverse() ? 0.0f : 1.0f;
return new ScaleAnimation(
fromValue,
toValue,
@@ -38,6 +41,7 @@ Animation createAnimationImpl(View view, int x, int y, int width, int height) {
.5f,
Animation.RELATIVE_TO_SELF,
.5f);
}
default:
throw new IllegalViewOperationException(
"Missing animation for property : " + mAnimatedProperty);

0 comments on commit 4c08105

Please sign in to comment.