@@ -231,28 +231,44 @@ private void updateLayout() {
231
231
setTranslationX (parentLayout .left );
232
232
setTranslationY (parentLayout .top );
233
233
234
+ // Determine opacity
235
+ float startAlpha = 1.0f ;
236
+ float endAlpha = 1.0f ;
237
+ switch (mAnimation ) {
238
+ case MOVE :
239
+ startAlpha = interpolatedStyle .opacity ;
240
+ endAlpha = 0.0f ;
241
+ break ;
242
+ case FADE :
243
+ startAlpha = ((startStyle != null ) ? startStyle .opacity : 1 ) * (1 - mNodePosition );
244
+ endAlpha = ((endStyle != null ) ? endStyle .opacity : 1 ) * mNodePosition ;
245
+ case FADE_IN :
246
+ startAlpha = 0.0f ;
247
+ endAlpha = ((endStyle != null ) ? endStyle .opacity : 1 ) * mNodePosition ;
248
+ break ;
249
+ case FADE_OUT :
250
+ startAlpha = ((startStyle != null ) ? startStyle .opacity : 1 ) * (1 - mNodePosition );
251
+ endAlpha = 0.0f ;
252
+ break ;
253
+ }
254
+
234
255
// Render the start view
235
- boolean isCrossFade = mAnimation != RNSharedElementAnimation .MOVE ;
236
- float startAlpha = !isCrossFade
237
- ? interpolatedStyle .opacity
238
- : ((startStyle != null ) ? startStyle .opacity : 1 ) * (1 - mNodePosition );
239
- mStartView .updateViewAndDrawable (
240
- interpolatedLayout ,
241
- parentLayout ,
242
- startContent ,
243
- startLayout ,
244
- interpolatedStyle ,
245
- startAlpha ,
246
- mResize ,
247
- mAlign ,
248
- mNodePosition
249
- );
256
+ if (mAnimation != RNSharedElementAnimation .FADE_IN ) {
257
+ mStartView .updateViewAndDrawable (
258
+ interpolatedLayout ,
259
+ parentLayout ,
260
+ startContent ,
261
+ startLayout ,
262
+ interpolatedStyle ,
263
+ startAlpha ,
264
+ mResize ,
265
+ mAlign ,
266
+ mNodePosition
267
+ );
268
+ }
250
269
251
270
// Render the end view as well for the "cross-fade" animations
252
- if (isCrossFade ) {
253
-
254
- // Render the end view
255
- float endAlpha = ((endStyle != null ) ? endStyle .opacity : 1 ) * mNodePosition ;
271
+ if ((mAnimation == RNSharedElementAnimation .FADE ) || (mAnimation == RNSharedElementAnimation .FADE_IN )) {
256
272
mEndView .updateViewAndDrawable (
257
273
interpolatedLayout ,
258
274
parentLayout ,
@@ -285,6 +301,8 @@ private void updateNodeVisibility() {
285
301
boolean hidden = mInitialLayoutPassCompleted &&
286
302
(item .getStyle () != null ) &&
287
303
(item .getContent () != null );
304
+ if (hidden && (mAnimation == RNSharedElementAnimation .FADE_IN ) && item .getName ().equals ("start" )) hidden = false ;
305
+ if (hidden && (mAnimation == RNSharedElementAnimation .FADE_OUT ) && item .getName ().equals ("end" )) hidden = false ;
288
306
item .setHidden (hidden );
289
307
}
290
308
}
0 commit comments