11package com .blankj .androidutilcode .core .activity ;
22
3+ import android .app .Activity ;
34import android .content .Context ;
45import android .content .Intent ;
6+ import android .graphics .Bitmap ;
7+ import android .graphics .drawable .BitmapDrawable ;
58import android .os .Build ;
69import android .os .Bundle ;
710import android .support .v4 .app .ActivityOptionsCompat ;
11+ import android .support .v4 .content .ContextCompat ;
12+ import android .transition .Explode ;
13+ import android .transition .Fade ;
14+ import android .transition .TransitionInflater ;
815import android .view .View ;
16+ import android .view .Window ;
917import android .widget .ImageView ;
1018import android .widget .TextView ;
1119
@@ -29,10 +37,12 @@ public class ActivityActivity extends BaseBackActivity {
2937
3038 ImageView viewSharedElement ;
3139 Random random = new Random ();
40+ private Bitmap bitmap ;
3241
3342 public static void start (Context context ) {
3443 Intent starter = new Intent (context , ActivityActivity .class );
35- context .startActivity (starter );
44+ ContextCompat .startActivity (context , starter ,
45+ ActivityOptionsCompat .makeSceneTransitionAnimation ((Activity ) context ).toBundle ());
3646 }
3747
3848 @ Override
@@ -42,6 +52,9 @@ public void initData(Bundle bundle) {
4252
4353 @ Override
4454 public int bindLayout () {
55+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .LOLLIPOP ) {
56+ getWindow ().requestFeature (Window .FEATURE_CONTENT_TRANSITIONS );
57+ }
4558 return R .layout .activity_activity ;
4659 }
4760
@@ -50,9 +63,13 @@ public int bindLayout() {
5063 public void initView (Bundle savedInstanceState , View view ) {
5164 getToolBar ().setTitle (getString (R .string .demo_activity ));
5265 viewSharedElement = (ImageView ) findViewById (R .id .view_shared_element );
53- findViewById (R .id .btn_start_activity_cls ).setOnClickListener (this );
54- findViewById (R .id .btn_start_activity_cls_opt ).setOnClickListener (this );
55- findViewById (R .id .btn_start_activity_cls_anim ).setOnClickListener (this );
66+ findViewById (R .id .btn_cls ).setOnClickListener (this );
67+ findViewById (R .id .btn_cls_opt_anim ).setOnClickListener (this );
68+ findViewById (R .id .btn_cls_opt_shared ).setOnClickListener (this );
69+ findViewById (R .id .btn_cls_opt_scale_up ).setOnClickListener (this );
70+ findViewById (R .id .btn_cls_opt_thumbnail_scale_up ).setOnClickListener (this );
71+ findViewById (R .id .btn_cls_opt_clip_reveal ).setOnClickListener (this );
72+ findViewById (R .id .btn_cls_anim ).setOnClickListener (this );
5673 findViewById (R .id .btn_shared_element ).setOnClickListener (this );
5774 findViewById (R .id .btn_start_home_activity ).setOnClickListener (this );
5875 findViewById (R .id .btn_finish_all_activity ).setOnClickListener (this );
@@ -61,6 +78,14 @@ public void initView(Bundle savedInstanceState, View view) {
6178 + "\n getLauncherActivity: " + ActivityUtils .getLauncherActivity (Config .PKG )
6279 + "\n getTopActivity: " + ActivityUtils .getTopActivity ()
6380 );
81+ bitmap = ((BitmapDrawable ) viewSharedElement .getDrawable ()).getBitmap ();
82+
83+ if (android .os .Build .VERSION .SDK_INT >= android .os .Build .VERSION_CODES .LOLLIPOP ) {
84+ Explode explode = (Explode ) TransitionInflater .from (this ).inflateTransition (R .transition .explode_1000 );
85+ Fade fade = (Fade ) TransitionInflater .from (this ).inflateTransition (R .transition .fade_1000 );
86+ getWindow ().setEnterTransition (explode );
87+ getWindow ().setReturnTransition (fade );
88+ }
6489 }
6590
6691 @ Override
@@ -71,14 +96,30 @@ public void doBusiness() {
7196 @ Override
7297 public void onWidgetClick (View view ) {
7398 switch (view .getId ()) {
74- case R .id .btn_start_activity_cls :
99+ case R .id .btn_cls :
75100 ActivityUtils .startActivity (SharedElementActivityActivity .class );
76101 break ;
77- case R .id .btn_start_activity_cls_opt :
102+ case R .id .btn_cls_opt_anim :
103+ ActivityUtils .startActivity (SharedElementActivityActivity .class ,
104+ getOption (0 ));
105+ break ;
106+ case R .id .btn_cls_opt_shared :
107+ ActivityUtils .startActivity (SharedElementActivityActivity .class ,
108+ getOption (1 ));
109+ break ;
110+ case R .id .btn_cls_opt_scale_up :
111+ ActivityUtils .startActivity (SharedElementActivityActivity .class ,
112+ getOption (2 ));
113+ break ;
114+ case R .id .btn_cls_opt_thumbnail_scale_up :
78115 ActivityUtils .startActivity (SharedElementActivityActivity .class ,
79116 getOption (3 ));
80117 break ;
81- case R .id .btn_start_activity_cls_anim :
118+ case R .id .btn_cls_opt_clip_reveal :
119+ ActivityUtils .startActivity (SharedElementActivityActivity .class ,
120+ getOption (4 ));
121+ break ;
122+ case R .id .btn_cls_anim :
82123 ActivityUtils .startActivity (SharedElementActivityActivity .class ,
83124 R .anim .fade_in_1000 , R .anim .fade_out_1000 );
84125 break ;
@@ -97,25 +138,44 @@ public void onWidgetClick(View view) {
97138
98139 private Bundle getOption (int type ) {
99140 switch (type ) {
100- case 3 :
101- return ActivityOptionsCompat .makeThumbnailScaleUpAnimation (viewSharedElement ,
102- viewSharedElement .getDrawingCache (),
103- viewSharedElement .getWidth () / 2 ,
104- viewSharedElement .getHeight () / 2 ).toBundle ();
105- case 2 :
106- return ActivityOptionsCompat .makeScaleUpAnimation (viewSharedElement ,
107- viewSharedElement .getWidth () / 2 , viewSharedElement .getHeight () / 2 ,
108- 0 , 0 ).toBundle ();
109- case 1 :
110- if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .LOLLIPOP ) {
111- return ActivityOptionsCompat .makeSceneTransitionAnimation (this ,
112- viewSharedElement ,
113- viewSharedElement .getTransitionName ()).toBundle ();
114- }
115141 default :
142+ case 0 :
116143 return ActivityOptionsCompat .makeCustomAnimation (this ,
117144 R .anim .slide_in_right_1000 ,
118- R .anim .slide_out_left_1000 ).toBundle ();
145+ R .anim .slide_out_left_1000 )
146+ .toBundle ();
147+ case 1 :
148+ return ActivityOptionsCompat .makeSceneTransitionAnimation (this
149+ // ,
150+ // viewSharedElement,
151+ // getString(R.string.activity_shared_element)
152+ )
153+ .toBundle ();
154+ case 2 :
155+ return ActivityOptionsCompat .makeScaleUpAnimation (viewSharedElement ,
156+ viewSharedElement .getWidth () / 2 ,
157+ viewSharedElement .getHeight () / 2 ,
158+ 0 , 0 )
159+ .toBundle ();
160+ case 3 :
161+ return ActivityOptionsCompat .makeThumbnailScaleUpAnimation (viewSharedElement ,
162+ bitmap ,
163+ 0 , 0 )
164+ .toBundle ();
165+ case 4 :
166+ return ActivityOptionsCompat .makeClipRevealAnimation (viewSharedElement ,
167+ viewSharedElement .getWidth () / 2 ,
168+ viewSharedElement .getHeight () / 2 ,
169+ 0 , 0 )
170+ .toBundle ();
171+ }
172+ }
173+
174+ @ Override
175+ public void onBackPressed () {
176+ super .onBackPressed ();
177+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .LOLLIPOP ) {
178+ finishAfterTransition ();
119179 }
120180 }
121181}
0 commit comments