Download - Android Activity Transition(ShareElement)
![Page 1: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/1.jpg)
ActivityTransition
Ted
![Page 2: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/2.jpg)
![Page 3: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/3.jpg)
more about
https://www.youtube.com/watch?v=RhiPJByIMr
M
2:45
![Page 4: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/4.jpg)
step 1
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
![Page 5: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/5.jpg)
step 2
res/transition/ 加入change_image_transform
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeBounds />
<changeImageTransform/>
</transitionSet>
![Page 6: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/6.jpg)
step3Intent intent = new Intent(this,NextActivity.class);
ActivityOptions options = ActivityOptions
.makeSceneTransitionAnimation(this,
Pair.create(event.getView(),
NextActivity.VIEW_NAME));
startActivity(intent, options.toBundle());
![Page 7: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/7.jpg)
final step
img.setTransitionName(VIEW_NAME);
sample code:
https://github.com/nightbear1009/LolipopActivityTransition
![Page 8: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/8.jpg)
what about pre-L
![Page 9: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/9.jpg)
![Page 10: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/10.jpg)
step1
overridePendingTransition(0, 0);
![Page 11: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/11.jpg)
step2
<style name="Transparent" parent="android:Theme.Holo.Light.DarkActionBar">>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
![Page 12: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/12.jpg)
step3
int[] screenLocation = new int[2];
view.getLocationOnScreen(screenLocation);
intent.putExtra("left", screenLocation[0]).
putExtra("top", screenLocation[1]).
putExtra("width", view.getWidth()).
putExtra("height", view.getHeight());
![Page 13: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/13.jpg)
step4
mView.setPivotX(0);
mView.setPivotY(0);
mView.setScaleX(mWidthScale);
mView.setScaleY(mHeightScale);
mView.setTranslationX(mLeftDelta);
mView.setTranslationY(mTopDelta);
![Page 14: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/14.jpg)
step5
mView.animate().setDuration(duration).
scaleX(1).scaleY(1).
translationX(0).translationY(0).
setInterpolator(sDecelerator);
![Page 15: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/15.jpg)
![Page 16: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/16.jpg)
mView.animate().setDuration(duration).
scaleX(mWidthScale).scaleY(mHeightScale).
translationX(mLeftDelta).translationY(mTopDelta);
ObjectAnimator bgAnim = ObjectAnimator.ofFloat(mView, "alpha", 0);
bgAnim.setDuration(duration);
bgAnim.start();
sample code
https://github.com/nightbear1009/ActivityAnimations
![Page 17: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/17.jpg)
the end...
![Page 18: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/18.jpg)
no~ not yet!!
![Page 19: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/19.jpg)
what about transition after http request?
nothing will happen….
what about transition from recyclerview to
recyclerview?
nothing will happen...
![Page 20: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/20.jpg)
![Page 21: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/21.jpg)
![Page 22: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/22.jpg)
postponeEnterTransition();
&
holder.imageView.getViewTreeObserver().addOnPreDrawListener(new
ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
startPostponedEnterTransition();
return true;
}
});
![Page 23: Android Activity Transition(ShareElement)](https://reader033.vdocuments.net/reader033/viewer/2022042817/55a69ab21a28ab75668b46dd/html5/thumbnails/23.jpg)
reminder
postponeEnterTransition(); will block ui thread.
所以我們必須將這個activity要顯示的資料從上個activity先帶進來,等到http request 結束之後才換成新的資料
sample code
https://github.com/nightbear1009/LolipopActivityTransition