2016-11-04 13 views
9

SytuacjaJak wyłączyć efekt zanikania obrazu w trybie React Native?

  • Dynamiczne przełączanie obrazów
  • React Native tryb
  • dev
  • Android

Problem

  • Obrazy pojawiają się, gdy pojawiają się w trybie deweloperskim. Jest to problem, ponieważ opracowuję i dostraja animacje obrazów z rzeczywistymi efektami zanikania. Czy możliwe jest wyłączenie efektu zanikania?

Próby

  • przełączony w tryb zwolnić. Działa, ale nie jest odpowiedni podczas tworzenia.
  • Minimalizowanie rozmiaru pliku obrazu. Brak widocznej różnicy.
  • Minimalizowanie rozmiaru wyświetlania obrazu. Brak widocznej różnicy.
+1

można zakładać jakiś kod używasz –

+0

Używasz Animated.spring() w dowolnym miejscu na stronie? Miałem problem, w którym użycie tego w jednym komponencie w drzewie wizualnym oznaczało, że każdy element na stronie miałby animację wejścia. Doprowadził mnie do szału, zanim dowiedziałem się, skąd przybywa. –

+0

Czy kiedykolwiek to rozgryzłeś? –

Odpowiedz

12

Wystarczy ustawić komponent fadeDuration={0} na Image, nie jest to udokumentowane

Można sprawdzić here więcej informacji

+0

bardzo przydatna odpowiedź. dzięki! – Val

0

udało mi się zapobiec animację na blaknięcie przez owinięcie moich <Image /> ze zwyczajem ViewGroupManager i ustawienie ReactImageView.mFadeDuration zero refleksji zanim obraz zostanie dodany do zwyczaju ViewGroup. Edit: Ale to dodaje zauważalne opóźnienia przy wyświetlaniu obrazu :( Jest rzeczywiście bez zwłoki

coś takiego:.

public class NoFadeImageWrapper extends ViewGroup { 
    public NoFadeImageWrapper(Context context) { 
     super(context); 
    } 

    @Override 
    public void onViewAdded(View child) { 
     if (child instanceof ReactImageView) { 
      ((ReactImageView) child).setFadeDuration(0); 
      ReflectionUtils.setField(child, "mIsDirty", true); 
     } 
     super.onViewAdded(child); 
    } 
} 

ReflectionUtils.setField realizacja:

public class ReflectionUtils { 
    public static void setField(Object obj, String name, Object value) { 
     try { 
      Field field = getField(obj.getClass(), name); 
      if (field == null) { 
       return; 
      } 
      field.setAccessible(true); 
      field.set(obj, value); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}