Fresco: Gemeinsamer Elementübergang

Erstellt am 28. März 2015  ·  57Kommentare  ·  Quelle: facebook/fresco

Der Übergang von freigegebenen Elementen scheint nicht zu funktionieren.

Getestet in einem Motorola-Gerät mit Android 5.0

Hilfreichster Kommentar

Hier ist der Workaround, den ich verwende, der gut funktioniert:
https://github.com/bumptech/glide

Alle 57 Kommentare

Können Sie uns nähere Angaben machen? Was genau haben Sie versucht und was ist stattdessen passiert?

In der neuen Android-Version Lollipop können wir eine ImageView als gemeinsamen Elementübergang zwischen Aktivitäten verwenden. In diesem Fall geht das Bild sanft von einer Aktivität zur nächsten über. Wenn Sie SimpleDraweeView verwenden, verschwindet es einfach.

Der Code zum Testen sollte in etwa so aussehen:

Thema der App:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowAllowEnterTransitionOverlap">true</item>
        <item name="android:windowAllowReturnTransitionOverlap">true</item>
    </style>

Aktivität1 Layout.xml:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/image"
        android:layout_width="@dimen/size_1"
        android:layout_height="@dimen/size_1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"/>

</RelativeLayout>

Aktivität2 Layout.xml:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/image"
        android:layout_width="@dimen/size_2"
        android:layout_height="@dimen/size_2"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:transitionName="image_transition"/>

</RelativeLayout>

Der Code zum Starten der zweiten Aktivität:

    Intent intent = new Intent(activity1, Activity2.class);
    ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(activity1, simpleDraweeView1, "image_transition");
    activity1.startActivity(intent, options.toBundle());

Dieser Code sollte einen Übergang zwischen den Aktivitäten herstellen, bei denen das Bild von der oberen linken Ecke der Aktivität 1 zur unteren rechten Ecke der Aktivität 2 verschoben und skaliert wird. Ich habe einen ähnlichen Code getestet, der Bilder aus dem Netzwerk geladen hat und er nicht angezeigt wird die Animation.

Ich denke, das ist auch realted https://github.com/facebook/fresco/issues/99

Ich vermute, dass dies mit Attach/Detach-Ereignissen zu tun hat, die View beim Übergang erhält. Das müssen wir untersuchen.

Auch das kann ich bestätigen. Übergänge von geteilten Elementen scheinen auf Fresco unterbrochen zu sein. Es wäre großartig, wenn wir dies beheben könnten, da dies ein sehr wichtiges Feature für die Zukunft ist.

Ist mir auch passiert. Beim Festlegen von transitionName xml attr auf SimpleDraweeView funktioniert die Methode setImageUri() nicht mehr

Irgendwelche Updates dazu?

Nachdem das FadeDrawable das Realbild animiert hat, gibt es ein Protokoll:
com.facebook.samples.comparison D/ViewRootImpl﹕ changeCanvasOpacity: opaque=false

Vielleicht führt die changeCanvasOpacity dazu, dass das Bild nicht gezeichnet wird.

Ist der Fehler behoben? Es ist auch für mein Projekt sehr wichtig. :)

Paket org.goodev.droidddle.drawee;

import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.view.SimpleDraweeView;

android.content.Context importieren;
android.graphics.Matrix importieren;
import android.util.AttributeSet;

public class TranslateDraweeView erweitert SimpleDraweeView {
public TranslateDraweeView(Kontextkontext) {
super(Kontext);
}

public TranslateDraweeView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public TranslateDraweeView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public TranslateDraweeView(Context context, GenericDraweeHierarchy hierarchy) {
    super(context, hierarchy);
}

// looks like overwrite this method can fix this issue
// but still don't figure out why
public void animateTransform(Matrix matrix) {
    invalidate();
}

}

@goodev Es gibt keine solche Methode zum Überschreiben.

@shumin0809 fügen Ausblenden für den Übergang.

Ich sehe ein anderes, aber immer noch fehlerhaftes Verhalten bei SharedElementTransitions. Ich weiß nicht, ob es sich um dasselbe, verwandte oder separate Problem handelt.

_Reproduktion _
Ziemlich Standard-Setup für einen SharedElementTransition:

  • RecyclerView in einem Fragment mit GridLayoutManager, der viele Bilder als SimpleDraweeViews anzeigt und den TransitionName dynamisch in der Viewholder-Bind-Methode festlegt (wo ich auch die uri festlege)
  • OnClick löst einen Übergang zu einem anderen Fragment mit einer einzelnen SimpleDrawee-Ansicht aus und derselbe TransitionName wird ebenfalls dynamisch festgelegt

_Erwartet _
Wie bei normalen ImageViews (sofern scaleType-Übereinstimmungen vorausgesetzt), nahtlose Animation von gemeinsam genutzten Ressourcen zwischen Fragmenten

_Beobachtet _
SharedElementTransition tritt auf, aber es gibt ein Flackern, bevor das Zielbild angezeigt wird (scheint, dass das Zielbild nicht früh genug eingestellt ist)

_Notizen _
Ich habe versucht, Bilder vom Web und von der Festplatte zu laden, und das Bild wird geladen und im Cache gespeichert, bevor der Übergang gestartet wird. Der Code des Zielfragments zieht genau die gleiche uri. Ich habe herumgefummelt und versucht, die Pipeline direkt zu verwenden (und viel gelernt), aber das Ergebnis konnte nicht beeinflusst werden.

_Einrichtung _
Geräte: Nexus 5 & Nexus 7 (2013), beide mit Android 5.1.1 (API 22)
Aktuelle Bibliothek und Tools: Fresco (0.5.0), Android Studio (1.3 Preview 3 EAP.0), compilSdk (22), Build-Tools (22.0.1)

_Realisierungen _
Beim Schreiben dieses Beitrags sind mir 2 Dinge aufgefallen, die relevant sein könnten:

  • Die beiden Drawees _sind_ unterschiedliche Größen (dies ist kein Problem für den Übergang von Standard-ImageViews und ich erinnere mich an nichts über Vorabrufen, das die Zielabmessungen festlegt)
  • Aus dem Gedächtnis denke ich, dass ich die Fragmente irgendwo im Code als Context fresco übergebe, was vielleicht bedeutet, dass die beiden Fragmente jeweils ihren eigenen Cache haben??

@jorgemf - https://developer.android.com/training/material/animations.html

_Starten Sie eine Aktivität mit einem geteilten Element _
...
4 - Weisen Sie den freigegebenen Elementen in beiden Layouts mit dem Attribut android:transitionName einen gemeinsamen Namen zu.

Für mein Problem kann es nur sein, dass ich den Übergang verschieben muss. Ich schau mir das heute mal an:
http://www.androiddesignpatterns.com/2015/03/activity-postponed-shared-element-transitions-part3b.html

Ich habe das gleiche Problem. Ich benutze Fresco 0.5.3 und SimpleDraweeView lade das Bild nicht mit attr " android:transitionName ". Kennt jemand eine andere Lösung mit Fresco?

@jorgemf Wenn Sie in Ihrer Activity1 Layout.xml "android-background" einstellen, funktioniert es nicht perfekt, aber es funktioniert.
Ich habe es in meinem Test gesetzt: android:background= "@ android:color/transparent "

@LuizGadao Wenn Sie einen Hintergrund festlegen, verlieren Sie alle Vorteile der Bibliothek. Ich denke, es ist sinnlos, da Sie es für Bilder aus dem Internet wünschen. Nicht für statische Ressourcen als Hintergrund.
Nachdem ich einige Bibliotheken getestet habe, funktioniert Picasso bei mir einwandfrei. Überhaupt keine Probleme.

@jorgemf da stimme ich dir zu. Es ist nur ein Hack, damit es funktioniert.

Gibt es Neuigkeiten zu diesem?

@LuizGadao können Sie ein Beispiel für Ihre XML-

Vielen Dank, dass Sie dieses Problem gemeldet haben, und danken Ihnen für Ihre Geduld. Wir haben das Kernteam benachrichtigt, um ein Update zu diesem Problem zu erhalten. Wir suchen innerhalb der nächsten 30 Tage nach einer Antwort oder das Problem kann geschlossen werden.

Gibt es Neuigkeiten zu diesem?

PS:
TranslateDraweeView von @goodev funktioniert auf einigen Geräten wie XiaoMi2, HuaWei P8 nicht richtig. ReenterTransition startet an falscher Position.

Wie Boxcounter sagte, funktioniert Tra slateDraweeView auch nicht auf dem HTC One M8

Wenn Sie ChangeImageTransform Transition verwenden, schlägt der Übergang des Share-Elements meiner Meinung nach fehl, da ChangeImageTransform die Matrix von ImageView animiert, die meiner Meinung nach nicht standardmäßig DraweeView unterstützt.

Das Problem, das mir begegnet ist, ist, dass das freigegebene Element mit "fitCenter" beginnt, während es ursprünglich "centerCrop" war.
Das Projekt kann das Problem reproduzieren
https://github.com/JackFan-Z/ActivitySharedElementTransition.git

Obwohl ich einen Workaround hinzugefügt habe
Bei meinem anderen privaten Projekt mit Fresko funktioniert es nicht.
Könnte jemand herausfinden, wo das eigentliche Problem liegt?

Falscher Startzustand des Übergangs
2015-10-01 11 26 34

Vor dem Übergang
2015-10-01 11 26 50

@JackFan-Z
Share-Element im Übergang setzt die endgültige Ansicht auf die Anfangswerte und animiert sie auf die endgültigen Werte.

Normales ImageView in Kombination mit ChangeImageTransform erfasst die Start- und Endwerte der Bildmatrix und animiert dann die Bildmatrixänderung.

DraweeView überschreibt jedoch bestimmte Funktionen im Zusammenhang mit der Bildmatrix, sodass ChangeImageTransform keine Auswirkungen auf das Bild hat.

Am Ende wird also nur ChangeBounds wirksam.

Derzeit habe ich keine Möglichkeit gefunden, die Bildmatrix von DraweeView zu manipulieren. Sogar setActualImageMatrix wurde als veraltet markiert. Angenommen, es ist nicht veraltet und funktioniert genau wie das Standard- setImageMatrix von Standard-ImageView. Trotzdem ist es nicht sehr bequem, die Änderung zu animieren, da Sie keine Möglichkeit haben, die Matrix zu ändern, nachdem Sie DraweeViewHierarchy . Sie müssen also DraweeViewHierarchy jedem onAnimationUpdate Aufruf ein neues DraweeViewHierarchy erstellen.

Ich weiß nicht, warum DraweeView auf diese Weise implementiert wird. Und ich denke, die derzeit mögliche Lösung besteht darin, die zugrunde liegende Bitmap zurückzubekommen und eine andere ImageView zu erstellen, um den ChangeImageTransform Übergang durchzuführen.

@seifenzeichen
Vielen Dank für Ihren Kommentar.

Tatsächlich habe ich in meinem privaten Projekt versucht, eine Dummy-ImageView zu erstellen, die dieselbe Bitmap wie das freigegebene Element verwendet. Das Problem besteht weiterhin.
Ich bin mir nicht sicher, ob das Problem, mit dem ich konfrontiert bin, mit Fresken zusammenhängt oder nicht.
Aber es ist sicher, dass ich das gleiche Problem mit SimpleDraweeView problemlos reproduzieren kann.

Das ChangeImageTransform verwendet die intrinsischen Dimensionen, um die Transformationsmatrix zu bestimmen. Unsere Implementierung von DraweeView verwendet ein DraweeHierarchy mit intrinsischen Dimensionen von -1 für width und height . Dies liegt daran, dass Drawee bereits die richtige Skalierungstypskalierung anwendet und daher keine Ansicht dafür erforderlich ist. Außerdem kann ImageView nur einen Maßstabstyp anwenden, während die zeichenbare Hierarchie separate Maßstabstypen für jeden Bildzweig verwenden kann (Platzhalter, Fehlerbild, tatsächliches Bild usw.). Das Zurückgeben tatsächlicher intrinsischer Dimensionen an die Ansicht birgt das Risiko von Größenfehlern.
Wenn Sie möchten, dass der Übergang funktioniert, sollten Sie ChangeBounds .

Wie wäre es, eine neue Option wie " fresco:ImageMatrixSrc=actual "

@boxcounter Im Moment denken wir, was wir jetzt haben, ist in Ordnung. Aber Sie könnten einen Pull-Request für Ihren Vorschlag erstellen :)

@massimocarli ChangeBounds funktioniert nur gut, wenn das freigegebene Bild bei beiden Aktivitäten/Ansichten dieselbe Größe hat. Wenn das Bild jedoch während des Übergangs in der Größe geändert werden soll, wird es beschnitten und sieht schlecht aus.
Was schlagen Sie auf diese Weise vor? ChangeImageTransform löst dies, aber es funktioniert nicht in DraweeView.

Hier gilt das gleiche...

@massimocarli ChangeBounds ist nicht gut genug.

Das versuche ich zu erreichen (hier wird ImageView verwendet): https://gfycat.com/HideousEarlyAndalusianhorse

So sieht es mit SimpleDraweeView aus: https://gfycat.com/PracticalCorruptGrouper
Beachten Sie, dass das Originalbild hinter dem animierten Bild falsch skaliert wird.

So sieht es nur mit ChangeBounds als Transition aus: https://gfycat.com/SorrowfulExemplaryAntlion

Hey Leute, ich habe das gleiche Problem. ChangeBounds funktioniert nicht reibungslos. Wenn es einen Workaround oder eine Lösung gibt, teilen Sie uns dies bitte mit. Der Übergang von gemeinsamen Elementen ist eines der besten Dinge, die Materialdesign eingeführt hat, und Fresco ist eine der besten Bibliotheken, die ich bisher verwendet habe. Bitte lassen Sie die Entwickler beide nahtlos verwenden.

Hat jemand eine Problemumgehung finden können, da Fresco dies nicht behebt?

Hier ist der Workaround, den ich verwende, der gut funktioniert:
https://github.com/bumptech/glide

Hallo zusammen,

Die ChangeBounds-Methode selbst reicht nicht aus und ich bin erstaunt über die Antwort von Facebook, dass der aktuelle Zustand der Übergänge von geteilten Elementen in Ordnung ist.

Ich habe endlich eine einfache Lösung gefunden, die bei einem Beispielprojekt für mich zu funktionieren scheint.
Da der ChangeBounds-Übergang das Layout selbst nicht über onMeasure() aktualisiert, sondern über onSizeChanged(), der derzeit von keiner Drawee-Ansicht überschrieben wird, wird der Maßstab des Drawables während des Übergangs nie aktualisiert.

Hier ist unser CustomDraweeView, der das TopLevelDrawable während des Übergangs aktualisiert:

public class CustomDraweeView extends SimpleDraweeView {

    public CustomDraweeView(Context context, GenericDraweeHierarchy hierarchy) {
        super(context, hierarchy);
    }

    public CustomDraweeView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    <strong i="10">@Override</strong>
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        Drawable drawable = getTopLevelDrawable();
        if (drawable != null) {
            drawable.setBounds(0, 0, w, h);
        }
    }
}

Hier ist die XML des Übergangssets, das Sie zum Aufblasen benötigen:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:duration="<strong i="14">@android</strong>:integer/config_mediumAnimTime"
    android:transitionOrdering="together"
    tools:targetApi="LOLLIPOP" >
    <changeBounds
        android:interpolator="<strong i="15">@android</strong>:interpolator/accelerate_decelerate"/>
    <changeTransform
        android:interpolator="<strong i="16">@android</strong>:interpolator/accelerate_decelerate"/>
</transitionSet>

Der einzige Nachteil, den ich bei dieser Methode habe, ist, wenn der Skalierungstyp der Drawables zwischen den Fragmenten oder den Aktivitäten nicht übereinstimmt, was Sie sowieso vermeiden sollten, wenn Sie Übergänge mit gemeinsam genutzten Elementen verwenden möchten.

@massimocarli @tyronen
Kann jemand bei Facebook einen Einblick geben, warum DraweeView diese Methode derzeit nicht überschreibt und welche möglichen Probleme mit dieser Änderung auftreten können? Wenn keine gefunden wird, erstelle ich gerne einen Pull-Request dafür.

Hallo zusammen! In der neuen Fresco-Version 0.10 mit benutzerdefinierter ScaleType-Transformation zwischen verschiedenen ScaleTypes ist dies trivial. Hier meine Umsetzung
https://gist.github.com/burzumrus/a589aa7e36ca003ddaf2334218c50ad0

Die Verwendung ist einfach

TransitionSet transitionSet = new TransitionSet();
transitionSet.addTransition(new ChangeBounds());
transitionSet.addTransition(new DraweeTransform(ScalingUtils.ScaleType.CENTER_CROP, ScalingUtils.ScaleType.FIT_CENTER));
getWindow().setSharedElementEnterTransition(transitionSet);

@burzumrus das ist unglaublich! Danke für die Umsetzung. Genau das hatte ich mit InterpolatingScaleType im Sinn. Erwägen Sie, eine Pull-Anfrage für Fresco zu stellen, falls noch nicht geschehen.

@plamenko Ich verwende Fresko 0.12 und

getWindow().setSharedElementEnterTransition(DraweeTransition.createTransitionSet(
                    ScalingUtils.ScaleType.CENTER_CROP, ScalingUtils.ScaleType.CENTER_CROP));
getWindow().setSharedElementEnterTransition(DraweeTransition.createTransitionSet(
                    ScalingUtils.ScaleType.CENTER_CROP, ScalingUtils.ScaleType.CENTER_CROP));

Die Animation funktioniert einwandfrei. Aber bei der Rückkehr zur ersten Aktivität verschwindet das Bild

Hat jemand diese mit Fragment-zu-Fragment-Animationen versucht? Weil es auf v0.12 nicht zu funktionieren scheint.
Bearbeiten : Ist es möglich, dass der RecyclerView Probleme verursacht?
Bearbeiten 2 : Scheint, als ob das Problem darin besteht, dass ChangeBounds selbst nur X- und Y-_window_-Koordinaten verwendet, wenn die Neuzuordnung auf true gesetzt ist. Die Einstellung über ChangeBounds 's setReparenting(true) ist veraltet und stattdessen wird ChangeTransform empfohlen. Für ein RecyclerView ist also auch transitionSet.addTransition(new ChangeTransform()); erforderlich. (Die zurückkehrende Animation scheint immer noch schlecht zu sein, aber zumindest ist die Eingabeanimation in Ordnung ( außer dass der Skalentyp keine Auswirkung hat, indem man startValues.view in endValues.view in createAnimator(...) ändert) mit Dies.)

@Gericop und @ladia12 0.12 funktionieren in meinem Projekt in Fragment-zu-Fragment-Animationen gut.
Ich verwende es auch in RecyclerView.
Die Sache ist, dass Sie nur die Fragmenttransaktion "ersetzen" verwenden können. Sie können die Transaktion "Hinzufügen" nicht verwenden.
Wenn es Ihnen helfen kann, hier ist ein Beispiel (ohne Fresko) für den Übergang von Fragment zu Fragment, das mir geholfen hat, mit etwas zu beginnen, das funktioniert hat (Sie können den Projektcode auf github herunterladen).
http://www.androidauthority.com/using-shared-element-transitions-activities-fragments-631996/

@sperochon Ich verwende replace und es ist in einem RecyclerView, aber es funktioniert nicht (und ehrlich gesagt ist es überraschend, dass es für Sie funktioniert, vielleicht verwenden Sie eine andere Version von RecyclerView? Ich verwende v24.1.1). Ich musste ein paar Änderungen vornehmen, damit die Animationen funktionieren:

  • ChangeTransform zum Übergangssatz hinzugefügt über transitionSet.addTransition(new ChangeTransform());

    • Dies liegt daran, dass ChangeBounds falsche Position der Startansicht in einem RecyclerView meldet (es gibt immer die X,Y-Koordinaten des ersten Elements zurück)

  • in createAnimator(...) if (mFromScale == mToScale) durch if(mFromScale == mToScale && startBounds.equals(endBounds)) ersetzen

    • die Transformation findet sonst nicht statt, wenn die beiden Bezogenen den gleichen Maßstabstyp haben, obwohl ihre Größen nicht gleich sind

  • in createAnimator(...) final GenericDraweeView draweeView = (GenericDraweeView) startValues.view; durch final GenericDraweeView draweeView = (GenericDraweeView) endValues.view; createAnimator(...) ersetzen (beachten Sie die Änderung von startValues -> endValues )

    • Verwenden Sie den Endbezogenen anstelle des Starters

  • AnimatorUpdateListener in scaleType.setValue(fraction) Aufruf die folgenden Zeilen ein:
Drawable drawable = draweeView.getTopLevelDrawable();

if (drawable != null) {
    drawable.setBounds(0, 0, draweeView.getWidth(), draweeView.getHeight());
}

Dieses letzte Stück Code basiert auf der Lösung von @Aohayou (weil ich CustomDraweeView nicht zum Laufen bringen konnte).
Getestet auf Android 5.0.2 mit Support-Lib-Version v24.1.1.

Beachten Sie, dass diese Lösung nicht funktioniert, wenn Sie zwischen Bildern mit derselben Größe animieren.

@Gericop Hier ist eine Demo, die gut funktioniert. Ich habe es gerade auf github übertragen. Ich habe versucht, den Code maximal zu bereinigen. Seien Sie vorsichtig: Ich habe in meiner Recycler-Ansicht nur 1 Bild verwendet, da der Übergangsname für jedes Element der Recycler-Ansicht unterschiedlich sein muss, damit Fresco funktioniert. Zur Vereinfachung habe ich also nur 1 Bild mit 1 Übergangsnamen verwendet.
https://github.com/sperochon/DemoFrescoFragment2Fragment

Ich hoffe das hilft!

@sperochon Versuchen Sie es mit mehreren Bildern.
Übrigens habe ich Ihre Demo mit unveränderter Quelle getestet. Dies ist das Ergebnis:

device-2016-08-14-220810_1

Dies ist völlig falsch. Die Endansicht beginnt an einer anderen Position und der Maßstabstyp hat keinerlei Auswirkungen. Ich weiß nicht, wie man dafür sagen kann, dass "es gut funktioniert", weil es eindeutig nicht funktioniert.

@Gericop Ich habe gerade den Code aktualisiert. Ich habe vergessen, ein anderes Layout für das Endfragment anzugeben. Versuch es bitte nocheinmal.

@sperochon Im API 23-Emulator funktioniert es
Der Punkt ist also: Die aktuelle Implementierung funktioniert nicht auf API 21 (hat es nicht auf API 22 getestet), funktioniert aber auf API 23.

Bearbeiten : Ihre Demo testet nur die standardmäßigen ChangeBounds und ChangeTransform Übergänge, nicht die DraweeTransition Facebook bereitgestellte

Leider hast du Recht... Ich habe es auf meinen Geräten getestet:
Android 5.0 + Fresco v0.11/v0.12 -> KO
Android 6.0 + Fresco v0.11/v0.12 -> OK
Ist mir vorher nicht aufgefallen...

@Gericop @sperochon Ich habe dazu einen Blogbeitrag auf Medium geschrieben. Bitte sehen Sie, ob es hilft.

@ladia12 Dieser Beitrag hat nichts mit dem Problem zu tun, mit dem ich (wir) konfrontiert war ... Ihr Blogeintrag handelt von _inter- Activity _ Transition, während mein Problem mit _inter- Fragment _ zusammenhängt. Darüber hinaus liegt der eigentliche Fehler darin, wie API 21 die ChangeBounds und/oder ChangeTransform Übergänge handhabt, wobei die von Facebook bereitgestellten DraweeTransition nicht helfen. Meine Lösung hingegen überwindet dies, wenn Quell- und Zielbild unterschiedliche Abmessungen (Breite und/oder Höhe) haben.

Nur zur Info:
Android 5.0 + Fresco v0.11/v0.12/0.13 -> KO
Android >= 5.1 + Fresco v0.11/0.12/0.13 -> OK

@ladia12 Wie haben Sie das Problem gelöst, dass das Originalbild verschwindet, wenn Sie zur ersten Aktivität zurückkehren?

@dbrant Ich habe das gleiche Problem. Haben Sie eine Lösung gefunden?

Siehe #1446

@ladia12 Wie haben Sie das Problem gelöst, dass das Originalbild verschwindet, wenn Sie zur ersten Aktivität zurückkehren?

@ladia12 Wie haben Sie das Problem gelöst, dass das Originalbild verschwindet, wenn Sie zur ersten Aktivität zurückkehren? Mein Originalbild befindet sich im Viewholder von recyclerview

Am Ende habe ich Picasso für den gemeinsamen Elementübergang verwendet. Es war nicht behoben
im Fresko. Picasso ist also leicht und es gibt keine Probleme, ihn zu benutzen
zusammen mit Fresko.

Am Mittwoch, den 19. Juni 2019 um 17:11 Uhr schrieb bembem1011 [email protected] :

@ladia12 https://github.com/ladia12 Wie hast du das Problem gelöst ?
Verschwindet das Originalbild bei der Rückkehr zur ersten Aktivität? Mein
Originalbild befindet sich im Viewholder von recyclerview


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/facebook/fresco/issues/22?email_source=notifications&email_token=AAXQ5WYUP5KBJYNBOZX7CCDP3ILM5A5CNFSM4A6ZMH32YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVZ#89
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AAXQ5W5EXO5SV4R2PXVTG7LP3ILM5ANCNFSM4A6ZMH3Q
.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen