| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- package com.cooleshow.base.utils;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.MotionEvent;
- import java.io.Serializable;
- import java.util.HashMap;
- import java.util.Map;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AppCompatActivity;
- /**
- * <pre>
- * author: blankj
- * blog : http://blankj.com
- * time : 2020/03/19
- * desc :
- * </pre>
- */
- public class UtilsTransActivity extends AppCompatActivity {
- private static final Map<UtilsTransActivity, TransActivityDelegate> CALLBACK_MAP = new HashMap<>();
- protected static final String EXTRA_DELEGATE = "extra_delegate";
- public static void start(final TransActivityDelegate delegate) {
- start(null, null, delegate, UtilsTransActivity.class);
- }
- public static void start(final Utils.Consumer<Intent> consumer,
- final TransActivityDelegate delegate) {
- start(null, consumer, delegate, UtilsTransActivity.class);
- }
- public static void start(final Activity activity,
- final TransActivityDelegate delegate) {
- start(activity, null, delegate, UtilsTransActivity.class);
- }
- public static void start(final Activity activity,
- final Utils.Consumer<Intent> consumer,
- final TransActivityDelegate delegate) {
- start(activity, consumer, delegate, UtilsTransActivity.class);
- }
- protected static void start(final Activity activity,
- final Utils.Consumer<Intent> consumer,
- final TransActivityDelegate delegate,
- final Class<?> cls) {
- if (delegate == null) return;
- Intent starter = new Intent(Utils.getApp(), cls);
- starter.putExtra(EXTRA_DELEGATE, delegate);
- if (consumer != null) {
- consumer.accept(starter);
- }
- if (activity == null) {
- starter.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- Utils.getApp().startActivity(starter);
- } else {
- activity.startActivity(starter);
- }
- }
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- overridePendingTransition(0, 0);
- Serializable extra = getIntent().getSerializableExtra(EXTRA_DELEGATE);
- if (!(extra instanceof TransActivityDelegate)) {
- super.onCreate(savedInstanceState);
- finish();
- return;
- }
- TransActivityDelegate delegate = (TransActivityDelegate) extra;
- CALLBACK_MAP.put(this, delegate);
- delegate.onCreateBefore(this, savedInstanceState);
- super.onCreate(savedInstanceState);
- delegate.onCreated(this, savedInstanceState);
- }
- @Override
- protected void onStart() {
- super.onStart();
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onStarted(this);
- }
- @Override
- protected void onResume() {
- super.onResume();
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onResumed(this);
- }
- @Override
- protected void onPause() {
- overridePendingTransition(0, 0);
- super.onPause();
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onPaused(this);
- }
- @Override
- protected void onStop() {
- super.onStop();
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onStopped(this);
- }
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onSaveInstanceState(this, outState);
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onDestroy(this);
- CALLBACK_MAP.remove(this);
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return;
- callback.onActivityResult(this, requestCode, resultCode, data);
- }
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- TransActivityDelegate callback = CALLBACK_MAP.get(this);
- if (callback == null) return super.dispatchTouchEvent(ev);
- if (callback.dispatchTouchEvent(this, ev)) {
- return true;
- }
- return super.dispatchTouchEvent(ev);
- }
- public abstract static class TransActivityDelegate implements Serializable {
- public void onCreateBefore(@NonNull UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/}
- public void onCreated(@NonNull UtilsTransActivity activity, @Nullable Bundle savedInstanceState) {/**/}
- public void onStarted(@NonNull UtilsTransActivity activity) {/**/}
- public void onDestroy(@NonNull UtilsTransActivity activity) {/**/}
- public void onResumed(@NonNull UtilsTransActivity activity) {/**/}
- public void onPaused(@NonNull UtilsTransActivity activity) {/**/}
- public void onStopped(@NonNull UtilsTransActivity activity) {/**/}
- public void onSaveInstanceState(@NonNull UtilsTransActivity activity, Bundle outState) {/**/}
- public void onRequestPermissionsResult(@NonNull UtilsTransActivity activity, int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {/**/}
- public void onActivityResult(@NonNull UtilsTransActivity activity, int requestCode, int resultCode, Intent data) {/**/}
- public boolean dispatchTouchEvent(@NonNull UtilsTransActivity activity, MotionEvent ev) {
- return false;
- }
- }
- }
|