Skip to content

Commit dda88a9

Browse files
committed
see 09/27 log
1 parent 412f2f6 commit dda88a9

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ public static void startActivity(@NonNull final Class<?> clz,
8181
Context context = getActivityOrApp();
8282
startActivity(context, null, context.getPackageName(), clz.getName(),
8383
getOptionsBundle(context, enterAnim, exitAnim));
84+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) {
85+
((Activity) context).overridePendingTransition(enterAnim, exitAnim);
86+
}
8487
}
8588

8689
/**
@@ -182,6 +185,9 @@ public static void startActivity(@NonNull final Bundle extras,
182185
Context context = getActivityOrApp();
183186
startActivity(context, extras, context.getPackageName(), clz.getName(),
184187
getOptionsBundle(context, enterAnim, exitAnim));
188+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) {
189+
((Activity) context).overridePendingTransition(enterAnim, exitAnim);
190+
}
185191
}
186192

187193
/**
@@ -287,6 +293,9 @@ public static void startActivity(@NonNull final String pkg,
287293
@AnimRes final int exitAnim) {
288294
Context context = getActivityOrApp();
289295
startActivity(context, null, pkg, cls, getOptionsBundle(context, enterAnim, exitAnim));
296+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) {
297+
((Activity) context).overridePendingTransition(enterAnim, exitAnim);
298+
}
290299
}
291300

292301
/**
@@ -396,6 +405,9 @@ public static void startActivity(@NonNull final Bundle extras,
396405
@AnimRes final int exitAnim) {
397406
Context context = getActivityOrApp();
398407
startActivity(context, extras, pkg, cls, getOptionsBundle(context, enterAnim, exitAnim));
408+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) {
409+
((Activity) context).overridePendingTransition(enterAnim, exitAnim);
410+
}
399411
}
400412

401413
/**
@@ -500,6 +512,9 @@ public static void startActivity(@NonNull final Intent intent,
500512
@AnimRes final int exitAnim) {
501513
Context context = getActivityOrApp();
502514
startActivity(intent, context, getOptionsBundle(context, enterAnim, exitAnim));
515+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) {
516+
((Activity) context).overridePendingTransition(enterAnim, exitAnim);
517+
}
503518
}
504519

505520
/**
@@ -589,6 +604,9 @@ public static void startActivities(@NonNull final Intent[] intents,
589604
@AnimRes final int exitAnim) {
590605
Context context = getActivityOrApp();
591606
startActivities(intents, context, getOptionsBundle(context, enterAnim, exitAnim));
607+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && context instanceof Activity) {
608+
((Activity) context).overridePendingTransition(enterAnim, exitAnim);
609+
}
592610
}
593611

594612
/**
@@ -751,6 +769,20 @@ public static void finishActivity(@NonNull final Activity activity, final boolea
751769
}
752770
}
753771

772+
/**
773+
* 结束Activity
774+
*
775+
* @param activity activity
776+
* @param enterAnim 入场动画
777+
* @param exitAnim 出场动画
778+
*/
779+
public static void finishActivity(@NonNull final Activity activity,
780+
@AnimRes final int enterAnim,
781+
@AnimRes final int exitAnim) {
782+
activity.finish();
783+
activity.overridePendingTransition(enterAnim, exitAnim);
784+
}
785+
754786
/**
755787
* 结束Activity
756788
*
@@ -778,6 +810,25 @@ public static void finishActivity(@NonNull final Class<?> clz, final boolean isL
778810
}
779811
}
780812

813+
/**
814+
* 结束Activity
815+
*
816+
* @param clz activity类
817+
* @param enterAnim 入场动画
818+
* @param exitAnim 出场动画
819+
*/
820+
public static void finishActivity(@NonNull final Class<?> clz,
821+
@AnimRes final int enterAnim,
822+
@AnimRes final int exitAnim) {
823+
List<Activity> activities = Utils.sActivityList;
824+
for (Activity activity : activities) {
825+
if (activity.getClass().equals(clz)) {
826+
activity.finish();
827+
activity.overridePendingTransition(enterAnim, exitAnim);
828+
}
829+
}
830+
}
831+
781832
/**
782833
* 结束到指定Activity
783834
*
@@ -813,6 +864,32 @@ public static boolean finishToActivity(@NonNull final Activity activity,
813864
return false;
814865
}
815866

867+
/**
868+
* 结束到指定Activity
869+
*
870+
* @param activity activity
871+
* @param isIncludeSelf 是否结束该activity自己
872+
* @param enterAnim 入场动画
873+
* @param exitAnim 出场动画
874+
*/
875+
public static boolean finishToActivity(@NonNull final Activity activity,
876+
final boolean isIncludeSelf,
877+
@AnimRes final int enterAnim,
878+
@AnimRes final int exitAnim) {
879+
List<Activity> activities = Utils.sActivityList;
880+
for (int i = activities.size() - 1; i >= 0; --i) {
881+
Activity aActivity = activities.get(i);
882+
if (aActivity.equals(activity)) {
883+
if (isIncludeSelf) {
884+
finishActivity(aActivity, enterAnim, exitAnim);
885+
}
886+
return true;
887+
}
888+
finishActivity(aActivity, enterAnim, exitAnim);
889+
}
890+
return false;
891+
}
892+
816893
/**
817894
* 结束到指定Activity
818895
*
@@ -848,6 +925,32 @@ public static boolean finishToActivity(@NonNull final Class<?> clz,
848925
return false;
849926
}
850927

928+
/**
929+
* 结束到指定Activity
930+
*
931+
* @param clz activity类
932+
* @param isIncludeSelf 是否结束该activity自己
933+
* @param enterAnim 入场动画
934+
* @param exitAnim 出场动画
935+
*/
936+
public static boolean finishToActivity(@NonNull final Class<?> clz,
937+
final boolean isIncludeSelf,
938+
@AnimRes final int enterAnim,
939+
@AnimRes final int exitAnim) {
940+
List<Activity> activities = Utils.sActivityList;
941+
for (int i = activities.size() - 1; i >= 0; --i) {
942+
Activity aActivity = activities.get(i);
943+
if (aActivity.getClass().equals(clz)) {
944+
if (isIncludeSelf) {
945+
finishActivity(aActivity, enterAnim, exitAnim);
946+
}
947+
return true;
948+
}
949+
finishActivity(aActivity, enterAnim, exitAnim);
950+
}
951+
return false;
952+
}
953+
851954
/**
852955
* 结束除最新之外的同类型Activity
853956
* <p>也就是让栈中最多只剩下一种类型的Activity</p>
@@ -881,6 +984,31 @@ public static void finishOtherActivitiesExceptNewest(@NonNull final Class<?> clz
881984
}
882985
}
883986

987+
/**
988+
* 结束除最新之外的同类型Activity
989+
* <p>也就是让栈中最多只剩下一种类型的Activity</p>
990+
*
991+
* @param clz activity类
992+
* @param enterAnim 入场动画
993+
* @param exitAnim 出场动画
994+
*/
995+
public static void finishOtherActivitiesExceptNewest(@NonNull final Class<?> clz,
996+
@AnimRes final int enterAnim,
997+
@AnimRes final int exitAnim) {
998+
List<Activity> activities = Utils.sActivityList;
999+
boolean flag = false;
1000+
for (int i = activities.size() - 1; i >= 0; i--) {
1001+
Activity activity = activities.get(i);
1002+
if (activity.getClass().equals(clz)) {
1003+
if (flag) {
1004+
finishActivity(activity, enterAnim, exitAnim);
1005+
} else {
1006+
flag = true;
1007+
}
1008+
}
1009+
}
1010+
}
1011+
8841012
/**
8851013
* 结束所有activity
8861014
*/
@@ -904,6 +1032,21 @@ public static void finishAllActivities(final boolean isLoadAnim) {
9041032
}
9051033
}
9061034

1035+
/**
1036+
* 结束所有activity
1037+
*
1038+
* @param enterAnim 入场动画
1039+
* @param exitAnim 出场动画
1040+
*/
1041+
public static void finishAllActivities(@AnimRes final int enterAnim, @AnimRes final int exitAnim) {
1042+
List<Activity> activityList = Utils.sActivityList;
1043+
for (int i = activityList.size() - 1; i >= 0; --i) {// 从栈顶开始移除
1044+
Activity activity = activityList.get(i);
1045+
activity.finish();// 在onActivityDestroyed发生remove
1046+
activity.overridePendingTransition(enterAnim, exitAnim);
1047+
}
1048+
}
1049+
9071050
private static Context getActivityOrApp() {
9081051
Activity topActivity = getTopActivity();
9091052
return topActivity == null ? Utils.getApp() : topActivity;

0 commit comments

Comments
 (0)