Fresco: рд╕рд╛рдЭрд╛ рддрддреНрд╡ рд╕рдВрдХреНрд░рдордг

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдорд╛рд░реНрдЪ 2015  ┬╖  57рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/fresco

рд╕рд╛рдЭрд╛ рддрддреНрд╡ рд╕рдВрдХреНрд░рдордг рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

Android 5.0 . рдХреЗ рд╕рд╛рде рдореЛрдЯреЛрд░реЛрд▓рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣рд╛рдВ рдореИрдВ рдЬрд┐рд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
https://github.com/bumptech/glide

рд╕рднреА 57 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдФрд░ рд╡рд┐рд╡рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рд╣реБрдЖ?

рдирдП рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд░реНрдЬрди рд▓реЙрд▓реАрдкреЙрдк рдореЗрдВ, рд╣рдо рдЗрдореЗрдЬ рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рддрддреНрд╡ рд╕рдВрдХреНрд░рдордг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЫрд╡рд┐ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рджреВрд╕рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рд╕реНрдореВрде рд╕рдВрдХреНрд░рдордг рдХрд░рддреА рд╣реИред 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 рд▓реЗрдЖрдЙрдЯ.рдПрдХреНрд╕рдПрдордПрд▓:

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

рдЧрддрд┐рд╡рд┐рдзрд┐2 рд▓реЗрдЖрдЙрдЯ.рдПрдХреНрд╕рдПрдордПрд▓:

<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

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди/рдЕрд▓рдЧ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕рдВрдХреНрд░рдордг рдореЗрдВ рд╣реЛрдиреЗ рдкрд░ рджреГрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреАред

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореИрдВ рдкреБрд╖реНрдЯрд┐ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдлреНрд░реЗрд╕реНрдХреЛ рдкрд░ рд╕рд╛рдЭрд╛ рддрддреНрд╡ рд╕рдВрдХреНрд░рдордг рдЯреВрдЯрд╛ рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реА рд╣реИред

рдореБрдЭреЗ рднреА рд╣реБрдЖред TranstitionName xml attr рдХреЛ SimpleDraweeView рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп, setImageUri() рд╡рд┐рдзрд┐ рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

FadeDrawable рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЫрд╡рд┐ рдХреЛ рдЪреЗрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд▓реЙрдЧ рд╣реЛрддрд╛ рд╣реИ:
com.facebook.samples.comparison D/ViewRootImplя╣Х changeCanvasрдЕрд╕реНрдкрд╖реНрдЯрддрд╛: рдЕрдкрд╛рд░рджрд░реНрд╢реА=рдЧрд▓рдд

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреИрдирд╡рд╛рд╕ рдУрдкреЗрд╕рд┐рдЯреА рдЫрд╡рд┐ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рди рдХрд░реЗред

рдХреНрдпрд╛ рдмрдЧ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ? рдпрд╣ рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред :)

рдкреИрдХреЗрдЬ org.goodev.droiddddle.drawee;

рдЖрдпрд╛рдд com.facebook.drawee.generic.GenericDraweeHierarchy;
рдЖрдпрд╛рдд com.facebook.drawee.view.SimpleDraweeView;

рдЖрдпрд╛рдд android.content.Context;
рдЖрдпрд╛рдд android.graphics.Matrix;
рдЖрдпрд╛рдд android.util.AttributeSet;

рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ TranslateDraweeView SimpleDraweeView рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ {
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрдиреБрд╡рд╛рджрдбреНрд░рд╛рд╡реА рд╡реНрдпреВ (рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн) {
рд╕реБрдкрд░ (рд╕рдВрджрд░реНрдн);
}

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 рдХреЗ рд▓рд┐рдП рд╕реБрдВрджрд░ рдорд╛рдирдХ рд╕реЗрдЯрдЕрдк:

  • GridLayoutManager рдХреЗ рд╕рд╛рде рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ RecyclerView, SimpleDraweeViews рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╡реНрдпреВрд╣реЛрд▓реНрдбрд░ рдмрд╛рдЗрдВрдб рд╡рд┐рдзрд┐ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрди рдкрд░ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рдирдирд╛рдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ (рдЬрд╣рд╛рдВ рдореИрдВ рдпреВрд░реА рднреА рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)
  • рдСрдирдХреНрд▓рд┐рдХ рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕рд┐рдВрдкрд▓рдбреНрд░рд╛рд╡реА рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рдЯреНрд░рд╛рдВрдЬрд┐рд╢рдирдирд╛рдо рднреА рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ

_рдЕрдкреЗрдХреНрд╖рд┐рдд_
рд╕рд╛рдорд╛рдиреНрдп рдЫрд╡рд┐ рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП (рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реНрдХреЗрд▓ рдЯрд╛рдЗрдк рдореИрдЪ), рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдирд┐рд░реНрдмрд╛рдз рдПрдиреАрдореЗрд╢рди

_рджреЗрдЦрд╛ рдЧрдпрд╛_
SharedElementTransition рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд▓рдХреНрд╖реНрдп рдЫрд╡рд┐ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рд╣реЛрддреА рд╣реИ (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп рдЫрд╡рд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд▓реНрджреА рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ)

_рдиреЛрдЯреНрд╕_
рдореИрдВрдиреЗ рд╡реЗрдм рдФрд░ рдбрд┐рд╕реНрдХ рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЫрд╡рд┐ рд▓реЛрдб рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рд╕рдВрдХреНрд░рдордг рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреИрд╢ рдореЗрдВ рд╣реИред рд▓рдХреНрд╖реНрдп рдЦрдВрдб рдХрд╛ рдХреЛрдб рдареАрдХ рдЙрд╕реА рдпреВрд░реА рдХреЛ рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реИред рдореИрдВ рд╕реАрдзреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрд╛) рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред

_рд╕реЗрдЯрдЕрдк_
рдбрд┐рд╡рд╛рдЗрд╕: Nexus 5 рдФрд░ Nexus 7 (2013), рджреЛрдиреЛрдВ Android 5.1.1 (API 22) рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ
рдЕрдк рдЯреВ рдбреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЯреВрд▓реНрд╕: рдлреНрд░реЗрд╕реНрдХреЛ (0.5.0), рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ (1.3 рдкреНрд░реАрд╡реНрдпреВ 3 рдИрдПрдкреА.0), рдХрдВрдкрд╛рдЗрд▓рдПрд╕рдбреАрдХреЗ (22), рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ (22.0.1)

_рдкреНрд░рд╛рдкреНрддрд┐рдпрд╛рдВ_
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдореИрдВрдиреЗ 2 рдЪреАрдЬреЗрдВ рджреЗрдЦреА рд╣реИрдВ рдЬреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:

  • рджреЛ рджрд░рд╛рдЬ _are_ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ (рдпрд╣ рдорд╛рдирдХ рдЫрд╡рд┐ рджреГрд╢реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдХреНрд╖реНрдп рдЖрдпрд╛рдо рд╕реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реА-рдлрд╝реЗрдЪрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдпрд╛рдж рдирд╣реАрдВ рд╣реИ)
  • рд╕реНрдореГрддрд┐ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдлреНрд░реЗрд╕реНрдХреЛ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рджреЛ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рдХреИрд╢ рд╣реИ ??

@jorgemf - рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЧрддрд┐рд╡рд┐рдзрд┐ 1 рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рдирдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ? https://developer.android.com/training/material/animations.html

_рдПрдХ рд╕рд╛рдЭрд╛ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░реЗрдВ_
...
4 - android:transitionName рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

рдореЗрд░реЗ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕рдВрдХреНрд░рдордг рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рдореИрдВ рдЖрдЬ рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛:
http://www.androiddesignpatterns.com/2015/03/activity-postponed-shared-element-transitions-part3b.html

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╣реВрдБред рдореИрдВ рдлреНрд░реЗрд╕реНрдХреЛ 0.5.3 рдФрд░ SimpleDraweeView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЛ attr " android:transitionName " рдХреЗ рд╕рд╛рде рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ред рдХрд┐рд╕реА рдХреЛ рдлреНрд░реЗрд╕реНрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рд╣рд░реА рд╕рдорд╛рдзрд╛рди рдкрддрд╛ рд╣реИ?

@jorgemf рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ Activity1 Layout.xml рдореЗрдВ "рдПрдВрдбреНрд░реЙрдЗрдб-рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб" рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛: android:background= "@ android:color/transparent "

@LuizGadao рдпрджрд┐ рдЖрдк рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗрдЯ
рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд┐рдХрд╛рд╕реЛ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред

@jorgemf рдореИрдВ

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЦрдмрд░?

@LuizGadao рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдПрдХреНрд╕рдПрдордПрд▓ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреЗ рдзреИрд░реНрдп рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдЯреАрдо рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╣рдо рдЕрдЧрд▓реЗ 30 рджрд┐рдиреЛрдВ рдХреЗ рднреАрддрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдмрдВрдж рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЦрдмрд░?

рдкреБрдирд╢реНрдЪ:
@goodev рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ TranslateDraweeView рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдЬреИрд╕реЗ XiaoMi2, HuaWei P8 рдкрд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд░реАрдПрдВрдЯрд░рдЯреНрд░рд╛рдВрд╕рд┐рд╢рди рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдмреЙрдХреНрд╕рдХрд╛рдЙрдВрдЯрд░ рдиреЗ рдХрд╣рд╛, Tra slateDraweeView HTC One M8 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рди рд╣реА

рдпрджрд┐ рдЖрдк рдЪреЗрдВрдЬрдЗрдореЗрдЬрдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдЯреНрд░рд╛рдВрдЬрд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реЗрдпрд░ рддрддреНрд╡ рд╕рдВрдХреНрд░рдордг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЪреЗрдВрдЬрдЗрдореЗрдЬрдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдЗрдореЗрдЬ рд╡реНрдпреВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдПрдирд┐рдореЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреНрд░рд╛рд╡реЗ рд╡реНрдпреВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдорд┐рд▓реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдЭрд╛ рддрддреНрд╡ "рдлрд┐рдЯ рд╕реЗрдВрдЯрд░" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ "рд╕реЗрдВрдЯрд░рдХреНрд░реЙрдк" рдерд╛ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреА рд╣реИ
https://github.com/JackFan-Z/ActivitySharedElementTransition.git

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреЛрдбрд╝рд╛
рдпрд╣ рдлреНрд░реЗрд╕реНрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░реА рджреВрд╕рд░реА рдирд┐рдЬреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХреЛрдИ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрд╕рд▓реА рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдВ рд╣реИ?

рд╕рдВрдХреНрд░рдордг рдХреА рдЧрд▓рдд рд╢реБрд░реБрдЖрдд рдХреА рд╕реНрдерд┐рддрд┐
2015-10-01 11 26 34

рд╕рдВрдХреНрд░рдордг рд╕реЗ рдкрд╣рд▓реЗ
2015-10-01 11 26 50

@ рдЬреИрдХрдлреИрди-рдЬреЗрдб
рд╕рдВрдХреНрд░рдордг рдореЗрдВ рд╢реЗрдпрд░ рддрддреНрд╡ рдЕрдВрддрд┐рдо рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдиреЛрдВ рдкрд░ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдорд╛рдиреЛрдВ рдореЗрдВ рдПрдирд┐рдореЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред

ChangeImageTransform рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╕рд╛рдорд╛рдиреНрдп ImageView рдЫрд╡рд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рдорд╛рдиреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЫрд╡рд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдПрдирд┐рдореЗрдЯ рдХрд░реЗрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ DraweeView рдЫрд╡рд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ, ChangeImageTransform рдХрд╛ рдЫрд╡рд┐ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ред

рддреЛ рдЖрдк рдЬреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдХреЗрд╡рд▓ рдЪреЗрдВрдЬрдмрд╛рдЙрдВрдб рдкреНрд░рднрд╛рд╡реА рд╣реЛ рд░рд╣рд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореБрдЭреЗ DraweeView рдХреЗ рдЫрд╡рд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ setActualImageMatrix рдХреЛ рднреА рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдкрджрд╛рд╡рдирдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЫрд╡рд┐ рджреГрд╢реНрдп рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ setImageMatrix рдХреА рддрд░рд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ DraweeViewHierarchy рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЪреЗрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╣реА рдЕрдиреБрдХреВрд▓рддрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ рдЖрдкрдХреЛ рдЕрдВрдд рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ onAnimationUpdate рдХреЙрд▓ рдкрд░ рдПрдХ рдирдпрд╛ DraweeViewHierarchy ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ DraweeView рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпреЛрдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдмрд┐рдЯрдореИрдк рдХреЛ рд╡рд╛рдкрд╕ рдкрд╛рдиреЗ рдФрд░ ChangeImageTransform рд╕рдВрдХреНрд░рдордг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЫрд╡рд┐ рджреГрд╢реНрдп рдмрдирд╛рдирд╛ рд╣реИред

@soapsign
рдЖрдкрдХреЗ рдХрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЕрд╕рд▓ рдореЗрдВ рдореЗрд░реА рдирд┐рдЬреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдбрдореА рдЫрд╡рд┐ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреЛ рд╕рд╛рдЭрд╛ рддрддреНрд╡ рдХреЗ рд╕рдорд╛рди рдмрд┐рдЯрдореИрдк рд▓реЗрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдлрд╝реНрд░реЗрд╕реНрдХреЛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИ рдХрд┐ рдореИрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ SimpleDraweeView рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

ChangeImageTransform рдкрд░рд┐рд╡рд░реНрддрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдЖрдпрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреА рд╣рдорд╛рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди DraweeView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдПрдХ DraweeHierarchy рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдЖрдпрд╛рдо рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП -1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ width рдФрд░ height ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Drawee рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рд╕реНрдХреЗрд▓ рдЯрд╛рдЗрдк рд╕реНрдХреЗрд▓рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рджреГрд╢реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ImageView рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдХреЗрд▓ рдкреНрд░рдХрд╛рд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдбреНрд░реЙрдПрдмрд▓ рдкрджрд╛рдиреБрдХреНрд░рдо рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рд╢рд╛рдЦрд╛ (рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░, рд╡рд┐рдлрд▓рддрд╛ рдЫрд╡рд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЫрд╡рд┐, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдХреЗрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдВрддрд░рд┐рдХ рдЖрдпрд╛рдореЛрдВ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдЖрдХрд╛рд░ рдореЗрдВ рдмрдЧ рд╣реЛрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕рдВрдХреНрд░рдордг рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ ChangeBounds рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

" fresco:ImageMatrixSrc=actual " рдЬреИрд╕реЗ рдирдП рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

@boxcounter рдлрд┐рд▓рд╣рд╛рд▓ рд╣рдо рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рдЬреЛ рд╣реИ рд╡рд╣ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ :)

@massimocarli ChangeBounds рддрднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕рд╛рдЭрд╛ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рджреЛрдиреЛрдВ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ/рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рд╕рдорд╛рди рд╣реЛред рд▓реЗрдХрд┐рди рдЬрдм рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдпрд╣ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЦрд░рд╛рдм рджрд┐рдЦрддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ? ChangeImageTransform рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ DraweeView рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ...

@massimocarli ChangeBounds рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдпрд╣реА рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдпрд╣ ImageView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ): https://gfycat.com/HideousEarlyAndalusianhorse

рдпрд╣ SimpleDraweeView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: https://gfycat.com/PracticalCorruptGrouper
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдирд┐рдореЗрдЯреЗрдб рдЫрд╡рд┐ рдХреЗ рдкреАрдЫреЗ рдореВрд▓ рдЫрд╡рд┐ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдЖрдХрд╛рд░ рд▓реЗрддреА рд╣реИред

рдЯреНрд░рд╛рдВрдЬрд┐рд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рд░реНрдл рдЪреЗрдВрдЬрдмрд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: https://gfycat.com/SorrowfulExemplaryAntlion

рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдЪреЗрдВрдЬрдмрд╛рдЙрдВрдб рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдпрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВред рд╕рд╛рдЭрд╛ рддрддреНрд╡ рд╕рдВрдХреНрд░рдордг рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдбрд┐рдЬрд╛рдЗрди рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдлреНрд░реНрд░реЗрд╕реНрдХреЛ рдмреЗрд╣рддрд░реАрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЕрдм рддрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рджреЛрдиреЛрдВ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрдВред

рдлреНрд░реЗрд╕реНрдХреЛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврд╝ рдкрд╛рдпрд╛ рд╣реИ?

рдпрд╣рд╛рдВ рдореИрдВ рдЬрд┐рд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
https://github.com/bumptech/glide

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░,

рдЪреЗрдВрдЬрдмрд╛рдЙрдВрдб рд╡рд┐рдзрд┐ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдлреЗрд╕рдмреБрдХ рдХреЗ рдЬрд╡рд╛рдм рд╕реЗ рдЪрдХрд┐рдд рд╣реВрдВ рдХрд┐ рд╕рд╛рдЭрд╛ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдареАрдХ рд╣реИред

рдореБрдЭреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рдЪреЗрдВрдЬрдмрд╛рдЙрдВрдб рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди рд▓реЗрдЖрдЙрдЯ рдХреЛ рдСрдирдореЗрдЬрд░ () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдСрдирд╕рд╛рдЗрдЬрд╝ рдЪреЗрдВрдЬ () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рд╕реА рднреА рдбреНрд░реЙрдЗрдВрдЧ рд╡реНрдпреВ рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди рдХреЗ рджреМрд░рд╛рди рдбреНрд░реЙрдПрдмрд▓ рдХрд╛ рд╕реНрдХреЗрд▓ рдХрднреА рднреА рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ 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 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>

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдкреИрдорд╛рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдпрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдк рд╕рд╛рдЭрд╛ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@massimocarli @tyronen
рдХреНрдпрд╛ рдлреЗрд╕рдмреБрдХ рдкрд░ рдХреЛрдИ рднреА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ DraweeView рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреЛ рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ? рдпрджрд┐ рдХреЛрдИ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдирдорд╕реНрддреЗ! рдирдП рдлреНрд░реЗрд╕реНрдХреЛ рд░рд┐рд▓реАрдЬ рдореЗрдВ 0.10 рдХрд╕реНрдЯрдо рд╕реНрдХреЗрд▓ рдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╕реНрдХреЗрд▓рдЯрд╛рдЗрдкреНрд╕ рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рддреБрдЪреНрдЫ рд╣реИред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ
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 ред рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдлреНрд░реЗрд╕реНрдХреЛ рдХреЗ рд▓рд┐рдП рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

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

рдПрдиреАрдореЗрд╢рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рд▓реМрдЯрдиреЗ рдкрд░ рдЫрд╡рд┐ рдЧрд╛рдпрдм рд╣реЛ рд░рд╣реА рд╣реИ

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрдиреНрд╣реЗрдВ рдлрд╝реНрд░реИрдЧрдореЗрдВрдЯ-рдЯреВ-рдлрд╝реНрд░реИрдЧрдореЗрдВрдЯ рдПрдирд┐рдореЗрд╢рди рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдпрд╛ рдерд╛? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ v0.12 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ RecyclerView рдкрд░реЗрд╢рд╛рдиреА рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗ?
2 рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ ChangeBounds рд╕реНрд╡рдпрдВ рдХреЗрд╡рд▓ X рдФрд░ Y _window_ рдХреЛрд░реНрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд░реАрдкреЗрд░реЗрдВрдЯрд┐рдВрдЧ рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИред рдЗрд╕реЗ ChangeBounds рдХреЗ setReparenting(true) рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп ChangeTransform рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рддреЛ RecyclerView , transitionSet.addTransition(new ChangeTransform()); рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред (рд╡рд╛рдкрд╕реА рдПрдиреАрдореЗрд╢рди рдЕрднреА рднреА рдЦрд░рд╛рдм рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдкреНрд░рд╡реЗрд╢ рдПрдиреАрдореЗрд╢рди рдареАрдХ рд╣реИ ( рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╕реНрдХреЗрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИ startValues.view рд╕реЗ endValues.view рдореЗрдВ createAnimator(...) рд╣рд▓ рдХрд░рддрд╛ рд╣реИ) рдпрд╣ред)

@Gericop рдФрд░ @ladia12 0.12 рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╝реНрд░реИрдЧрдореЗрдВрдЯ-рдЯреВ-рдлрд╝реНрд░реИрдЧрдореЗрдВрдЯ рдПрдирд┐рдореЗрд╢рди рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ RecyclerView рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ 'рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди' рдЦрдВрдб рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк 'рдРрдб' рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдпрджрд┐ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдЦрдВрдб-рд╕реЗ-рдЯреБрдХрдбрд╝рд╛ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рднрд┐рддреНрддрд┐рдЪрд┐рддреНрд░ рдХреЗ рдмрд┐рдирд╛) рд╣реИ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝ рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА (рдЖрдк рдЬреАрдердм рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)
http://www.androidauthority.com/using-shared-element-transitions-activities-fragments-631996/

@sperochon рдореИрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ

  • 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; createAnimator(...) рдмрджрд▓реЗрдВ ( 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 рдпрд╣рд╛рдБ рдПрдХ рдбреЗрдореЛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рдЬреАрдердм рдкрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдзрд┐рдХрддрдо рдХреЛрдб рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ: рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреБрдирд░реНрдЪрдХреНрд░рдг рджреГрд╢реНрдп рдореЗрдВ рдХреЗрд╡рд▓ 1 рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝реНрд░реЗрд╕реНрдХреЛ рдХреЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдЪрдХреНрд░рдг рджреГрд╢реНрдп рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдкрд░ рд╕рдВрдХреНрд░рдордг рдирд╛рдо рднрд┐рдиреНрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ 1 рд╕рдВрдХреНрд░рдордг рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ 1 рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
https://github.com/sperochon/DemoFrescoFragment2Fragment

рдЙрдордореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА!

@sperochon рдЗрд╕реЗ рдХрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдПрдВред
рд╡реИрд╕реЗ, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдбреЗрдореЛ рдХреЛ рдЕрдирдореЙрдбрд┐рдлрд╛рдЗрдб рд╕реЛрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЯреЗрд╕реНрдЯ рдХрд┐рдпрд╛ред рдпрд╣ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

device-2016-08-14-220810_1

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рдЧрд▓рдд рд╣реИред рдЕрдВрддрд┐рдо рджреГрд╢реНрдп рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреИрдорд╛рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@Gericop рдореИрдВрдиреЗ рдЕрднреА рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЕрдВрдд рдЦрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЖрдЙрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХреАрдЬрд┐рдпреЗред

@sperochon рдПрдкреАрдЖрдИ 23 рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ (рдПрдкреАрдЖрдИ 21) рдкрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдПрдкреАрдЖрдИ 21 рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдпрд╣ рд╡рд╣рд╛рдВ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рддреЛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ: рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдкреАрдЖрдИ 21 рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдПрдкреАрдЖрдИ 22 рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛), рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ 23 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдЖрдкрдХрд╛ рдбреЗрдореЛ рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ ChangeBounds рдФрд░ ChangeTransform рдЯреНрд░рд╛рдВрдЬрд╝рд┐рд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ DraweeTransition рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди Facebook рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ... рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ:
Android 5.0 + рдлреНрд░реЗрд╕реНрдХреЛ v0.11/v0.12 -> KO
Android 6.0 + рдлреНрд░реЗрд╕реНрдХреЛ v0.11/v0.12 -> OK
рдкрд╣рд▓реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛...

@Gericop @sperochon рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдорд╛рдзреНрдпрдо рдкрд░ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрд╛ рд╣реИред рдХреГрдкрдпрд╛ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИред

@ladia12 рдЙрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ (рд╣рдо рдереЗ) ... рдЖрдкрдХреА рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ _inter- рдЧрддрд┐рд╡рд┐рдзрд┐ _ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬрдмрдХрд┐ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ _inter- Fragment _ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрд╕рд▓реА рдмрдЧ рдпрд╣ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ 21 рдХреИрд╕реЗ ChangeBounds рдФрд░/рдпрд╛ ChangeTransform рдЯреНрд░рд╛рдВрдЬрд┐рд╢рди рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдлреЗрд╕рдмреБрдХ рдиреЗ DraweeTransition рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рджреВрд╕рд░реА рдУрд░, рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдкрд░ рдХрд╛рдмреВ рдкрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рд╕реНрд░реЛрдд рдФрд░ рд▓рдХреНрд╖реНрдп рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдпрд╛рдо (рдЪреМрдбрд╝рд╛рдИ рдФрд░/рдпрд╛ рдКрдВрдЪрд╛рдИ) рд╣реИрдВред

рд╕рд┐рд░реНрдл рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП:
Android 5.0 + рдлреНрд░реЗрд╕реНрдХреЛ v0.11/v0.12/0.13 -> KO
Android>= 5.1 + рдлреНрд░реЗрд╕реНрдХреЛ v0.11/0.12/0.13 -> OK

@ 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?email_source=notifications&email_token=AAXQ5WYUP5KBJYNBOZX7CCDP3ILM5A5CNFSM4A6ZMH32YY3PNVWWWK3TUL52HS4DFVREXG43VMVBW63DN#PWSWZHJKT
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAXQ5W5EXO5SV4R2PXVTG7LP3ILM5ANCNFSM4A6ZMH3Q
.

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

stevenmtang picture stevenmtang  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amodkanthe picture amodkanthe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stephen-workpop picture stephen-workpop  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ykostova picture ykostova  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sungerk picture sungerk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ