Fresco: انتقال العنصر المشترك

تم إنشاؤها على ٢٨ مارس ٢٠١٥  ·  57تعليقات  ·  مصدر: facebook/fresco

لا يبدو أن انتقال العنصر المشترك يعمل.

تم اختباره في جهاز Motorola يعمل بنظام Android 5.0

التعليق الأكثر فائدة

هذا هو الحل الذي أستخدمه ويعمل بشكل جيد:
https://github.com/bumptech/glide

ال 57 كومينتر

هل يمكنك أن تعطينا المزيد من التفاصيل؟ ما الذي حاولت فعله بالضبط ، وماذا حدث بدلاً من ذلك؟

في إصدار android الجديد ، lollipop ، يمكننا استخدام ImageView كعنصر انتقال مشترك بين الأنشطة. في هذه الحالة ، تقوم الصورة بانتقال بسيط من نشاط إلى آخر. عند استخدام SimpleDraweeView تختفي فقط.

يجب أن يكون الكود المراد اختباره كالتالي:

موضوع التطبيق:

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

نشاط 1 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>

Activity2 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>

كود بدء النشاط الثاني:

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

يجب أن يقوم هذا الرمز بالانتقال بين الأنشطة حيث تتحرك الصورة وتغيير حجمها من الزاوية اليسرى العلوية للنشاط 1 إلى الزاوية اليمنى السفلية للنشاط 2. لقد اختبرت رمزًا مشابهًا لتحميل الصور من الشبكة ولا يتم عرضه الرسوم المتحركة.

أعتقد أن هذا حقيقي أيضًا https://github.com/facebook/fresco/issues/99

أظن أن هذا له علاقة بإرفاق / فصل الأحداث التي يحصل عليها العرض عند الانتقال. سيتعين علينا التحقيق في ذلك.

هذا شيء يمكنني تأكيده أيضًا. يبدو أن انتقالات العنصر المشترك معطلة على فريسكو. سيكون من الرائع لو تمكنا من إصلاح هذا ، لأن هذه ميزة مهمة للغاية للمضي قدمًا.

حدث لي ايضا عند تعيين سمة xml لـ transtitionName إلى SimpleDraweeView ، توقفت طريقة setImageUri () عن العمل

أي تحديثات على هذا؟

بعد انتهاء FadeDrawable من تحريك الصورة الحقيقية ، يوجد سجل:
com.facebook.samples.comparison D / ViewRootImpl ﹕ changeCanvasOpacity: معتم = خطأ

ربما يتسبب changeCanvasOpacity في عدم رسم الصورة.

هل الخلل ثابت؟ إنه مهم جدًا لمشروعي أيضًا. :)

حزمة org.goodev.droidddle.drawee ؛

استيراد com.facebook.drawee.generic.GenericDraweeHierarchy ؛
استيراد com.facebook.drawee.view.SimpleDraweeView ؛

استيراد android.content.Context ؛
استيراد android.graphics.Matrix ؛
استيراد android.util.AttributeSet ؛

يمتد تطبيق TranslateDraweeView للفئة العامة إلى SimpleDraweeView {
عرض TranslateDraweeView العام (سياق السياق) {
سوبر (سياق) ؛
}

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 ليس هناك مثل هذه الطريقة للكتابة.

@ shumin0809 فقط أضف هذه الطريقة ، هذه طريقة إخفاء عامة للانتقال.

أرى سلوكًا مختلفًا ، ولكن لا يزال عربات التي تجرها الدواب مع SharedElementTransitions. لا أعرف ما إذا كانت هذه هي نفس المشكلة أم ذات صلة أم منفصلة.

_إنتاج _
إعداد قياسي جدًا لـ SharedElementTransition:

  • RecyclerView في جزء مع GridLayoutManager يعرض الكثير من الصور مثل SimpleDraweeViews ، مع تعيين اسم الانتقال عليها ديناميكيًا في طريقة ربط العارض (حيث أقوم أيضًا بتعيين uri)
  • أطلق OnClick ، ​​انتقالًا إلى جزء مختلف باستخدام طريقة عرض SimpleDrawee واحدة ، كما تم تعيين نفس اسم الانتقال ديناميكيًا

_ متوقع _
بالنسبة إلى ImageViews العادي (تطابق scaleType المقدم) ، رسوم متحركة سلسة للموارد المشتركة بين الأجزاء

_ تمت ملاحظتها _
SharedElementTransition يحدث ولكن هناك وميض قبل ظهور الصورة الهدف (يبدو أن الصورة الهدف لم يتم تعيينها في وقت مبكر بما فيه الكفاية)

_ملاحظات _
لقد حاولت تحميل الصور من الويب والقرص ، وتم تحميل الصورة وفي ذاكرة التخزين المؤقت قبل بدء النقل. رمز الجزء الهدف يسحب نفس عنوان URL بالضبط. لقد تلاعبت في محاولة استخدام خط الأنابيب مباشرة (وتعلمت الكثير) لكنني فشلت في التأثير على النتيجة.

_إعداد _
الأجهزة: Nexus 5 و Nexus 7 (2013) ، يعمل كلاهما بنظام Android 5.1.1 (API 22)
مكتبة وأدوات حديثة: جدارية (0.5.0) ، Android Studio (1.3 Preview 3 EAP.0) ، compileSdk (22) ، أدوات البناء (22.0.1)

_الواقع _
أثناء كتابة هذا المنشور ، لاحظت شيئين قد يكونان مهمين:

  • أحجام مختلفة من Drawees _are_ (هذه ليست مشكلة في نقل ImageViews القياسية ولا أتذكر أي شيء عن الجلب المسبق الذي يحدد الأبعاد المستهدفة)
  • أعتقد أنني من الذاكرة أقوم بتمرير الأجزاء الجصية كسياق في مكان ما في الكود ، ربما يعني أن الجزأين لهما ذاكرة التخزين المؤقت الخاصة بهما ؟؟

jorgemf - ألا تحتاج التعليمات البرمجية المنشورة إلى سمة نقل اسم مطابقة تم تعيينها في تخطيط النشاط 1؟ https://developer.android.com/training/material/animations.html

_ابدأ نشاطًا باستخدام عنصر مشترك _
...
4 - قم بتعيين اسم شائع للعناصر المشتركة في كلا التخطيطين باستخدام السمة android: transferName.

بالنسبة لمشكلتي ، ربما أحتاج فقط إلى تأجيل الانتقال. سألقي نظرة على هذا اليوم:
http://www.androiddesignpatterns.com/2015/03/activity-postponed-shared-element-transitions-part3b.html

أنا مع نفس المشكلة. أنا أستخدم 0.5.3 في الهواء الطلق و SimpleDraweeView لا يتم تحميل الصورة باستخدام سمة " android: transferName". أي شخص يعرف حل آخر باستخدام فريسكو؟

jorgemf إذا قمت بتعيين "android-background" في Activity1 Layout.xml ، فلن يعمل بشكل مثالي ، ولكنه سيعمل.
قمت بتعيينه في الاختبار: android: background = "@ android: color / transparent "

LuizGadao إذا قمت بتعيين خلفية ، فستفقد جميع مزايا المكتبة. أعتقد أنه من غير المجدي كما تريد للصور التي يتم تنزيلها من الإنترنت. ليس من أجل الموارد الثابتة كخلفية.
بعد اختبار بعض المكتبات ، تعمل بيكاسو بشكل جيد بالنسبة لي. لا توجد مشاكل على الإطلاق.

jorgemf أتفق معك. انها مجرد اختراق للقيام بذلك العمل.

أي أخبار عن هذا؟

LuizGadao هل يمكنك نشر مثال على XML

شكرًا لك على الإبلاغ عن هذه المشكلة ونقدر سعة صدرك. لقد أبلغنا الفريق الأساسي للحصول على تحديث بشأن هذه المشكلة. نحن نبحث عن رد خلال الثلاثين يومًا القادمة وإلا سيتم إغلاق المشكلة.

أي أخبار عن هذا؟

ملاحظة:
لا يعمل TranslateDraweeView المقدم من goodev بشكل صحيح على بعض الأجهزة مثل XiaoMi2 و HuaWei P8. يبدأ الانتقال إلى الموضع الخاطئ.

كما قال boxcounter ، لا يعمل Tra slateDraweeView على HTC One M8 ، ولا أيضًا

إذا كنت تستخدم ChangeImageTransform Transition ، فأعتقد أن انتقال عنصر المشاركة قد فشل لأن ChangeImageTransform يقوم بتحريك مصفوفة ImageView التي أعتقد أنها لا تدعمها افتراضيًا DraweeView.

المشكلة التي قابلتها هي أن العنصر المشترك يبدأ بـ "fitCenter" بينما كان في الأصل "centerCrop".
يمكن للمشروع إعادة إنتاج المشكلة
https://github.com/JackFan-Z/ActivitySharedElementTransition.git

على الرغم من أنني أضفت حلاً
لا يعمل في مشروعي الخاص الآخر باستخدام اللوحات الجدارية.
هل يمكن لأي شخص أن يكتشف أين تكمن المشكلة الحقيقية؟

بداية خاطئة لحالة الانتقال
2015-10-01 11 26 34

قبل الانتقال
2015-10-01 11 26 50

@ JackFan-Z
يقوم عنصر المشاركة في المرحلة الانتقالية بتعيين العرض النهائي للقيم الأولية وتحريكه إلى القيم النهائية.

ستلتقط طريقة عرض الصور العادية مع ChangeImageTransform قيم البداية والنهاية لمصفوفة الصورة ثم تحريك تغيير مصفوفة الصورة.

ومع ذلك ، يتجاوز DraweeView وظيفة معينة مرتبطة بمصفوفة الصورة ، لذا لن يكون لـ ChangeImageTransform أي تأثير على الصورة.

إذن ما ينتهي بك الأمر هو أن تطبيق ChangeBounds هو الوحيد الذي يسري مفعوله.

حاليًا ، لم أجد طريقة للتعامل مع مصفوفة صورة DraweeView. حتى setActualImageMatrix تم وضع علامة على أنه مهمل. لنفترض أنه لم يتم إهماله وأنه يعمل تمامًا مثل setImageMatrix الافتراضي لـ ImageView. ومع ذلك ، فليس من التواطؤ حقًا تحريك التغيير نظرًا لحقيقة أنه ليس لديك أي طريقة لتغيير المصفوفة بعد تعيين DraweeViewHierarchy . لذلك في النهاية تحتاج إلى إنشاء DraweeViewHierarchy على كل onAnimationUpdate مكالمة.

لا أعرف لماذا ينفذ DraweeView بهذه الطريقة. وأعتقد أن الحل الحالي المحتمل هو استعادة الصورة النقطية الأساسية وإنشاء ImageView أخرى للقيام بعملية الانتقال ChangeImageTransform .

تضمين التغريدة
شكرا على تعليقك.

في الواقع ، في مشروعي الخاص ، حاولت إنشاء ImageView وهمية تأخذ نفس الصورة النقطية كعنصر مشترك. المشكلة لا تزال قائمة.
لست متأكدًا مما إذا كانت المشكلة التي أواجهها مرتبطة بلوحات جدارية أم لا.
لكن من المؤكد أنه يمكنني إعادة إنتاج نفس المشكلة بسهولة باستخدام SimpleDraweeView.

يستخدم ChangeImageTransform الأبعاد الجوهرية لتحديد مصفوفة التحويل. يستخدم تطبيقنا لـ DraweeView DraweeHierarchy الذي يحتوي على أبعاد جوهرية تساوي -1 لـ width و height . هذا لأن Drawee يطبق بالفعل مقياسًا صحيحًا لنوع المقياس ، وبالتالي ليست هناك حاجة لطريقة عرض للقيام بذلك. علاوة على ذلك ، يمكن لـ ImageView تطبيق نوع مقياس واحد فقط بينما يمكن للتسلسل الهرمي القابل للرسم استخدام أنواع مقياس منفصلة لكل فرع صورة (عنصر نائب ، صورة فشل ، صورة فعلية ، وما إلى ذلك). تؤدي إعادة الأبعاد الجوهرية الفعلية إلى العرض إلى خطر وجود أخطاء في الحجم.
إذا كنت تريد عمل النقل ، فيجب عليك استخدام ChangeBounds .

ماذا عن إضافة خيار جديد مثل " فريسكو: ImageMatrixSrc = الفعلي

boxcounter في الوقت الحالي ، نعتقد أن ما لدينا الآن على ما يرام. ولكن يمكنك إنشاء طلب سحب لاقتراحك :)

يعمل massimocarli ChangeBounds بشكل جيد فقط عندما يكون للصورة المشتركة نفس الحجم في كل من الأنشطة / المشاهدات. ولكن عندما يجب تغيير حجم الصورة أثناء الانتقال ، فإنها تقطع وتبدو سيئة.
ماذا تقترح أن تفعل بهذه الطريقة؟ ChangeImageTransform حل هذا ، لكنه لا يعمل في DraweeView.

كذلك هنا...

massimocarli ChangeBounds ليست جيدة بما فيه الكفاية.

هذا ما أحاول تحقيقه (هذا باستخدام ImageView): https://gfycat.com/HideousEarlyAndalusianhorse

هذا ما يبدو عليه استخدام SimpleDraweeView: https://gfycat.com/PracticalCorruptGrouper
لاحظ الطريقة التي يتم بها تغيير حجم الصورة الأصلية بشكل غير صحيح خلف الصورة المتحركة.

هذا ما يبدو عليه مع ChangeBounds فقط باعتباره الانتقال: https://gfycat.com/SorrowfulExemplaryAntlion

مرحبًا يا رفاق ، لدي نفس المشكلة. ChangeBounds لا يعمل بسلاسة. إذا كان هناك حل بديل أو إصلاح ، فيرجى إخبارنا. يعد انتقال العناصر المشتركة أحد أفضل الأشياء التي قدمها تصميم المواد وتعد اللوحات الجدارية واحدة من أفضل المكتبات التي استخدمتها حتى الآن. يرجى السماح للمطورين باستخدام كليهما بسلاسة.

هل تمكن أي شخص من إيجاد حل بديل لأن Fresco لن يصلح ذلك؟

هذا هو الحل الذي أستخدمه ويعمل بشكل جيد:
https://github.com/bumptech/glide

مرحبا جميعا،

طريقة ChangeBounds نفسها ليست كافية وأنا مندهش من الإجابة من Facebook بأن الحالة الحالية لتحولات العناصر المشتركة على ما يرام.

لقد وجدت أخيرًا حلاً بسيطًا بدرجة كافية يبدو أنه يعمل بالنسبة لي في مشروع نموذجي.
نظرًا لأن انتقال ChangeBounds لا يقوم بتحديث التخطيط نفسه من خلال onMeasure () ولكن من خلال onSizeChanged () ، والذي لا يتم تجاوزه حاليًا بواسطة أي عرض مسحوب عليه ، لا يتم تحديث مقياس الرسم القابل للرسم أبدًا أثناء الانتقال.

إليك CustomDraweeView الخاص بنا الذي يقوم بتحديث TopLevelDrawable أثناء الانتقال:

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

فيما يلي ملف xml الخاص بالمجموعة الانتقالية التي ستحتاج إلى تضخيمها:

<?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>

الجانب السلبي الوحيد الذي أواجهه في هذه الطريقة هو عندما لا يتطابق نوع مقياس العناصر القابلة للرسم بين الأجزاء أو الأنشطة ، وهو ما يجب تجنبه على أي حال إذا كنت تريد استخدام انتقالات العناصر المشتركة.

تضمين التغريدة
هل يمكن لأي شخص في Facebook تقديم نظرة ثاقبة عن سبب عدم تجاوز DraweeView هذه الطريقة حاليًا والمشكلات المحتملة التي قد تظهر مع هذا التعديل؟ إذا لم يتم العثور على أي شيء ، فسأكون سعيدًا لإنشاء طلب سحب لذلك.

تحية للجميع! في الإصدار الجديد من Fresco 0.10 مع تحويل ScaleType المخصص بين ScaleTypes المختلفة ، يعد أمرًا بسيطًا. هنا هو تطبيقي
https://gist.github.com/burzumrus/a589aa7e36ca003ddaf2334218c50ad0

الاستخدام بسيط

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

burzumrus هذا مذهل! شكرا لتنفيذه. هذا بالضبط ما كان يدور في خلدي مع InterpolatingScaleType . ضع في اعتبارك تقديم طلب سحب لـ Fresco إذا لم يتم القيام به بالفعل.

plamenko أنا أستخدم الجص 0.12 و

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

الرسوم المتحركة تعمل بشكل مثالي. ولكن عند العودة إلى النشاط الأول ، تختفي الصورة

هل جرب أي شخص هذه الرسوم المتحركة من جزء إلى جزء؟ لأنه لا يبدو أنه يعمل على الإصدار 0.12.
تحرير : هل من الممكن أن يسبب RecyclerView مشاكل؟
التحرير 2 : يبدو أن المشكلة تكمن في أن ChangeBounds نفسه يستخدم فقط كوردان X و Y _window_ إذا تم تعيين إعادة التأهيل على "صحيح". تم إيقاف الإعداد عبر ChangeBounds 's setReparenting(true) ويوصى بدلاً من ذلك ChangeTransform . لذلك ، مطلوب أيضًا لـ RecyclerView ، transitionSet.addTransition(new ChangeTransform()); . (يبدو أن الحركة العائدة لا تزال سيئة ، ولكن على الأقل الرسوم المتحركة المدخلة على ما يرام ( باستثناء أن نوع المقياس ليس له أي تأثير لتغيير startValues.view إلى endValues.view في createAnimator(...) يحل ذلك) مع هذه.)

يعملGericop و @ ladia12 0.12 بشكل جيد في مشروعي في الرسوم المتحركة من جزء إلى جزء.
أنا استخدمه أيضًا في RecyclerView.
الشيء هو أنه يمكنك فقط استخدام معاملة تجزئة "استبدال". لا يمكنك استخدام معاملة "إضافة".
إذا كان بإمكانه مساعدتك ، فإليك مثال (بدون لوحة جدارية) للانتقال من جزء إلى جزء ساعدني في البدء في شيء نجح (يمكنك تنزيل رمز المشروع على github)
http://www.androidauthority.com/using-shared-element-transitions-activities-fragments-631996/

sperochon أنا استخدم استبدال وهو في RecyclerView لكنه لا يعمل (وبصراحة ، من المدهش أنه يعمل من أجلك ، ربما تستخدم إصدارًا مختلفًا من RecyclerView؟ أنا أستخدم v24.1.1). اضطررت إلى إجراء بعض التغييرات لجعل الرسوم المتحركة تعمل:

  • تمت إضافة ChangeTransform إلى مجموعة الانتقال عبر transitionSet.addTransition(new ChangeTransform());

    • هذا يرجع إلى حقيقة أن ChangeBounds عن موضع غير صحيح لعرض البداية في RecyclerView (دائمًا ما يُرجع أحرف X و Y للعنصر الأول)

  • في createAnimator(...) استبدل if (mFromScale == mToScale) بـ if(mFromScale == mToScale && startBounds.equals(endBounds))

    • لن يحدث التحويل بخلاف ذلك إذا كان اللذان يشتركان في نفس نوع المقياس ، على الرغم من أن أحجامهما ليست متطابقة

  • في createAnimator(...) استبدل final GenericDraweeView draweeView = (GenericDraweeView) startValues.view; بـ final GenericDraweeView draweeView = (GenericDraweeView) endValues.view; (ضع في اعتبارك التغيير startValues -> endValues )

    • استخدم المسحوب عليه في النهاية بدلاً من المسحوب عليه في البداية

  • في AnimatorUpdateListener بعد المكالمة scaleType.setValue(fraction) ، أدخل الأسطر التالية:
Drawable drawable = draweeView.getTopLevelDrawable();

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

يعتمد هذا الجزء الأخير من الكود على حل Aohayou (لأنني لم أستطع عمل CustomDraweeView ).
تم اختبار هذا على Android 5.0.2 مع دعم إصدار lib v24.1.1.

لاحظ أن هذا الحل لن يعمل إذا قمت بالتحريك بين الصور ذات الأحجام نفسها.

Gericop هنا عرض توضيحي أنه يعمل بشكل جيد. لقد ارتكبت للتو على جيثب. حاولت تنظيف الرمز كحد أقصى. كن حذرًا: لقد استخدمت صورة واحدة فقط في عرض جهاز إعادة التدوير الخاص بي لأن اسم الانتقال يجب أن يكون مختلفًا في كل عنصر من عرض جهاز إعادة التدوير حتى تعمل Fresco. لذلك ، للتبسيط ، استخدمت صورة واحدة فقط باسم انتقال واحد.
https://github.com/sperochon/DemoFrescoFragment2Fragment

نأمل أن تكون هذه المساعدة!

sperochon جربها مع صور متعددة.
بالمناسبة ، لقد اختبرت العرض التوضيحي الخاص بك مع مصدر غير معدل. هذه هي النتيجة:

device-2016-08-14-220810_1

هذا خاطئ تماما. يبدأ عرض النهاية من موضع مختلف وليس لنوع المقياس أي تأثير على الإطلاق. لا أعرف كيف يمكنك أن تقول لهذا "إنه يعمل بشكل جيد" لأنه من الواضح أنه لا يعمل.

Gericop لقد قمت للتو بتحديث الكود. لقد نسيت تحديد تخطيط مختلف لجزء النهاية. يرجى المحاولة مرة أخرى.

sperochon في محاكي API 23 ، يعمل بشكل جيد. على جهازي (API 21) لا يحدث ذلك. تم اختباره أيضًا في محاكي API 21 ، ولكنه لا يعمل هناك أيضًا.
لذا فإن النقطة هي: التنفيذ الحالي لا يعمل على API 21 (لم يتم اختباره على API 22) ، ولكنه يعمل على API 23.

تحرير : يختبر العرض التوضيحي الخاص بك فقط التحولات الافتراضية ChangeBounds و ChangeTransform ، وليس تطبيق Facebook الذي قدمه DraweeTransition .

لسوء الحظ ، أنت على حق ... لقد اختبرت ذلك على أجهزتي:
Android 5.0 + Fresco v0.11 / v0.12 -> KO
Android 6.0 + Fresco v0.11 / v0.12 -> موافق
لم ألاحظ ذلك من قبل ...

Gericopsperochon لقد كتبت منشور مدونة على الوسيط حول هذا الموضوع. يرجى معرفة ما إذا كان يساعد.

@ ladia12 هذا نشاط _ الانتقال ، بينما مشكلتي متعلقة بـ _inter- جزء _. علاوة على ذلك ، يكمن الخطأ الحقيقي في كيفية تعامل API 21 مع التحولات ChangeBounds و / أو ChangeTransform حيث لا يساعد Facebook على توفير DraweeTransition أيضًا. من ناحية أخرى ، يتغلب الحل الخاص بي على هذا ، إذا كان للصور المصدر والهدف أبعاد مختلفة (العرض و / أو الارتفاع).

فقط لمزيد من المعلومات:
Android 5.0 + Fresco v0.11 / v0.12 / 0.13 -> KO
Android> = 5.1 + Fresco v0.11 / 0.12 / 0.13 -> موافق

@ ladia12 كيف تم حل مشكلة اختفاء الصورة الأصلية عند العودة للنشاط الأول؟

@ dbrant لدي نفس المشكلة ، هل وجدت طريقة لحلها؟

انظر # 1446

@ ladia12 كيف تم حل مشكلة اختفاء الصورة الأصلية عند العودة للنشاط الأول؟

@ ladia12 كيف تم حل مشكلة اختفاء الصورة الأصلية عند العودة للنشاط الأول؟ صورتي الأصلية موجودة في عارض إعادة التدوير

انتهى بي الأمر باستخدام بيكاسو لانتقال العنصر المشترك. لم يتم إصلاحه
في فريسكو. لذا فإن بيكاسو خفيف الوزن ولا توجد مشكلة في استخدامه
جنبا إلى جنب مع فريسكو.

في الأربعاء 19 يونيو 2019 الساعة 5:11 مساءً كتب bembem1011 [email protected] :

@ ladia12 https://github.com/ladia12 كيف حللت مشكلة
الصورة الأصلية تختفي عند العودة للنشاط الأول؟ لي
الصورة الأصلية في عارض إعادة التدوير

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/facebook/fresco/issues/22؟
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AAXQ5W5EXO5SV4R2PXVTG7LP3ILM5ANCNFSM4A6ZMH3Q
.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

eldk picture eldk  ·  3تعليقات

bigfreeZhou picture bigfreeZhou  ·  4تعليقات

eresid picture eresid  ·  4تعليقات

hanhmh1203 picture hanhmh1203  ·  4تعليقات

amodkanthe picture amodkanthe  ·  3تعليقات