2016-11-04 3 views
9

Wie deaktiviere ich die Bildüberblendung in React Native? Situation

  • Dynamisch Makeln Bilder
  • Reagieren india
  • Dev-Modus
  • Android

Problem

  • Die Bilder werden eingeblendet, wenn sie im Entwicklungsmodus angezeigt werden. Dies ist ein Problem, da ich Bildanimationen mit tatsächlichen Einblendeffekten entwickle und abstimme. Ist es möglich, den Einblendeffekt zu deaktivieren?

Versuche

  • Switched-Modus freizugeben. Funktioniert aber nicht während der Entwicklung.
  • Minimierung der Bilddateigröße. Kein sichtbarer Unterschied.
  • Minimierung der Bildanzeigegröße. Kein sichtbarer Unterschied.
+1

Können Sie einige Code schreiben Sie –

+0

verwenden Verwenden Sie Animated.spring() irgendwo auf der Seite? Ich hatte ein Problem, bei dem die Verwendung in einer Komponente im visuellen Baum bedeutete, dass jedes Element auf der Seite eine Fade-In-Animation erhalten würde. Hat mich ein bisschen verrückt gemacht, bevor ich herausgefunden habe, woher es kommt. –

+0

Haben Sie das jemals herausgefunden? –

Antwort

12

Nur Set fadeDuration={0} zu Image Komponente, dies ist nicht dokumentiert

können Sie here überprüfen, um weitere Informationen

+0

sehr nützliche Antwort. Vielen Dank! – Val

0

konnte ich durch Umwickeln meines <Image /> mit einem benutzerdefinierten ViewGroupManager und Einstellung ReactImageView.mFadeDuration auf Null mit Reflexion der Fade-Animation verhindern, bevor das Bild der benutzerdefinierten ViewGroup hinzugefügt wird. Edit: Aber das fügt eine merkliche Verzögerung bei der Anzeige des Bildes :( ist es eigentlich keine Verzögerung

Etwas wie folgt aus:.

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 Umsetzung:

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(); 
     } 
    } 
}