ActivityActivity.java 11.9 KB
Newer Older
B
Blankj 已提交
1
package com.blankj.androidutilcode.feature.core.activity;
C
cmj 已提交
2

B
Blankj 已提交
3
import android.content.Context;
B
Blankj 已提交
4
import android.content.Intent;
B
Blankj 已提交
5 6
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
B
Blankj 已提交
7
import android.os.Build;
C
cmj 已提交
8
import android.os.Bundle;
B
Blankj 已提交
9
import android.support.v4.app.ActivityOptionsCompat;
C
cmj 已提交
10
import android.view.View;
B
Blankj 已提交
11
import android.view.Window;
B
Blankj 已提交
12
import android.widget.ImageView;
C
cmj 已提交
13 14
import android.widget.TextView;

B
Blankj 已提交
15
import com.blankj.androidutilcode.Config;
C
cmj 已提交
16
import com.blankj.androidutilcode.R;
B
Blankj 已提交
17
import com.blankj.androidutilcode.base.BaseBackActivity;
B
Blankj 已提交
18 19
import com.blankj.androidutilcode.feature.core.CoreUtilActivity;
import com.blankj.androidutilcode.MainActivity;
B
Blankj 已提交
20
import com.blankj.utilcode.util.ActivityUtils;
B
Blankj 已提交
21
import com.blankj.utilcode.util.LogUtils;
B
Blankj 已提交
22
import com.blankj.utilcode.util.SpanUtils;
C
cmj 已提交
23

B
Blankj 已提交
24 25
import java.util.Random;

C
cmj 已提交
26 27 28 29 30
/**
 * <pre>
 *     author: Blankj
 *     blog  : http://blankj.com
 *     time  : 2016/10/13
B
Blankj 已提交
31
 *     desc  : Activity 工具类 Demo
C
cmj 已提交
32 33
 * </pre>
 */
B
Blankj 已提交
34
public class ActivityActivity extends BaseBackActivity {
C
cmj 已提交
35

B
Blankj 已提交
36 37
    ImageView viewSharedElement;
    Random random = new Random();
B
Blankj 已提交
38
    private Bitmap bitmap;
B
Blankj 已提交
39 40
    private Intent intent;
    private Intent[] intents = new Intent[2];
B
Blankj 已提交
41

B
Blankj 已提交
42 43
    public static void start(Context context) {
        Intent starter = new Intent(context, ActivityActivity.class);
B
Blankj 已提交
44
        context.startActivity(starter);
B
Blankj 已提交
45 46
    }

C
cmj 已提交
47
    @Override
B
Blankj 已提交
48
    public void initData(Bundle bundle) {
B
Blankj 已提交
49

B
Blankj 已提交
50
    }
C
cmj 已提交
51

B
Blankj 已提交
52 53
    @Override
    public int bindLayout() {
B
Blankj 已提交
54 55 56
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
        }
B
Blankj 已提交
57 58
        return R.layout.activity_activity;
    }
C
cmj 已提交
59

B
Blankj 已提交
60

B
Blankj 已提交
61
    @Override
B
Blankj 已提交
62
    public void initView(Bundle savedInstanceState, View contentView) {
B
Blankj 已提交
63
        getToolBar().setTitle(getString(R.string.demo_activity));
B
Blankj 已提交
64
        viewSharedElement = findViewById(R.id.view_shared_element);
B
Blankj 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
        findViewById(R.id.btn_clz).setOnClickListener(this);
        findViewById(R.id.btn_clz_opt).setOnClickListener(this);
        findViewById(R.id.btn_clz_anim).setOnClickListener(this);
        findViewById(R.id.btn_act_clz).setOnClickListener(this);
        findViewById(R.id.btn_act_clz_opt).setOnClickListener(this);
        findViewById(R.id.btn_act_clz_shared_element).setOnClickListener(this);
        findViewById(R.id.btn_act_clz_anim).setOnClickListener(this);
        findViewById(R.id.btn_pkg_cls).setOnClickListener(this);
        findViewById(R.id.btn_pkg_cls_opt).setOnClickListener(this);
        findViewById(R.id.btn_pkg_cls_anim).setOnClickListener(this);
        findViewById(R.id.btn_act_pkg_cls).setOnClickListener(this);
        findViewById(R.id.btn_act_pkg_cls_opt).setOnClickListener(this);
        findViewById(R.id.btn_act_pkg_cls_shared_element).setOnClickListener(this);
        findViewById(R.id.btn_act_pkg_cls_anim).setOnClickListener(this);
        findViewById(R.id.btn_intent).setOnClickListener(this);
        findViewById(R.id.btn_intent_opt).setOnClickListener(this);
        findViewById(R.id.btn_intent_shared_element).setOnClickListener(this);
        findViewById(R.id.btn_intent_anim).setOnClickListener(this);
        findViewById(R.id.btn_intents).setOnClickListener(this);
        findViewById(R.id.btn_intents_opt).setOnClickListener(this);
        findViewById(R.id.btn_intents_anim).setOnClickListener(this);
        findViewById(R.id.btn_act_intents).setOnClickListener(this);
        findViewById(R.id.btn_act_intents_opt).setOnClickListener(this);
        findViewById(R.id.btn_act_intents_anim).setOnClickListener(this);
        findViewById(R.id.btn_act_clz_shared_element).setOnClickListener(this);
B
Blankj 已提交
90
        findViewById(R.id.btn_start_home_activity).setOnClickListener(this);
B
Blankj 已提交
91 92
        findViewById(R.id.btn_finish_activity).setOnClickListener(this);
        findViewById(R.id.btn_finish_to_activity).setOnClickListener(this);
B
Blankj 已提交
93
        findViewById(R.id.btn_finish_all_activities).setOnClickListener(this);
B
Blankj 已提交
94
        TextView tvAboutActivity = findViewById(R.id.tv_about_activity);
B
Blankj 已提交
95
        tvAboutActivity.setText(new SpanUtils()
B
Blankj 已提交
96
                .appendLine("isActivityExists: " + ActivityUtils.isActivityExists(Config.PKG, SubActivityActivity.class.getName()))
B
Blankj 已提交
97 98
                .appendLine("getLauncherActivity: " + ActivityUtils.getLauncherActivity(Config.PKG))
                .appendLine("getTopActivity: " + ActivityUtils.getTopActivity())
B
Blankj 已提交
99
                .appendLine("isActivityExistsInStack: " + ActivityUtils.isActivityExistsInStack(CoreUtilActivity.class))
B
Blankj 已提交
100 101 102 103 104 105
                .append("getActivityIcon: ")
                .appendImage(ActivityUtils.getActivityIcon(ActivityActivity.class), SpanUtils.ALIGN_CENTER)
                .appendLine()
                .append("getActivityLogo: ")
                .appendImage(ActivityUtils.getActivityLogo(ActivityActivity.class), SpanUtils.ALIGN_CENTER)
                .create()
B
Blankj 已提交
106
        );
B
Blankj 已提交
107 108
        bitmap = ((BitmapDrawable) viewSharedElement.getDrawable()).getBitmap();

B
Blankj 已提交
109
        intent = new Intent(this, SubActivityActivity.class);
B
Blankj 已提交
110
        intents[0] = intent;
B
Blankj 已提交
111
        intents[1] = new Intent(this, SubActivityActivity.class);
C
cmj 已提交
112 113 114
    }

    @Override
B
Blankj 已提交
115
    public void doBusiness() {
B
Blankj 已提交
116 117 118 119 120

    }

    @Override
    public void onWidgetClick(View view) {
C
cmj 已提交
121
        switch (view.getId()) {
B
Blankj 已提交
122
            case R.id.btn_clz:
B
Blankj 已提交
123
                ActivityUtils.startActivity(SubActivityActivity.class);
B
Blankj 已提交
124
                break;
B
Blankj 已提交
125
            case R.id.btn_clz_opt:
B
Blankj 已提交
126
                ActivityUtils.startActivity(SubActivityActivity.class,
B
Blankj 已提交
127
                        getOption(random.nextInt(5)));
B
Blankj 已提交
128
                break;
B
Blankj 已提交
129
            case R.id.btn_clz_anim:
B
Blankj 已提交
130
                ActivityUtils.startActivity(SubActivityActivity.class,
B
Blankj 已提交
131
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
B
Blankj 已提交
132
                break;
B
Blankj 已提交
133 134
            case R.id.btn_act_clz:
                ActivityUtils.startActivity(this,
B
Blankj 已提交
135
                        SubActivityActivity.class);
B
Blankj 已提交
136
                break;
B
Blankj 已提交
137 138
            case R.id.btn_act_clz_opt:
                ActivityUtils.startActivity(this,
B
Blankj 已提交
139
                        SubActivityActivity.class,
B
Blankj 已提交
140
                        getOption(random.nextInt(5)));
B
Blankj 已提交
141
                break;
B
Blankj 已提交
142 143 144

            case R.id.btn_act_clz_shared_element:
                ActivityUtils.startActivity(this,
B
Blankj 已提交
145
                        SubActivityActivity.class,
B
Blankj 已提交
146
                        viewSharedElement);
B
Blankj 已提交
147
                break;
B
Blankj 已提交
148 149
            case R.id.btn_act_clz_anim:
                ActivityUtils.startActivity(this,
B
Blankj 已提交
150
                        SubActivityActivity.class,
B
Blankj 已提交
151 152 153 154
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
                break;
            case R.id.btn_pkg_cls:
                ActivityUtils.startActivity(this.getPackageName(),
B
Blankj 已提交
155
                        SubActivityActivity.class.getName());
B
Blankj 已提交
156 157 158
                break;
            case R.id.btn_pkg_cls_opt:
                ActivityUtils.startActivity(this.getPackageName(),
B
Blankj 已提交
159
                        SubActivityActivity.class.getName(),
B
Blankj 已提交
160 161 162 163
                        getOption(random.nextInt(5)));
                break;
            case R.id.btn_pkg_cls_anim:
                ActivityUtils.startActivity(this.getPackageName(),
B
Blankj 已提交
164
                        SubActivityActivity.class.getName(),
B
Blankj 已提交
165
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
B
Blankj 已提交
166
                break;
B
Blankj 已提交
167 168 169
            case R.id.btn_act_pkg_cls:
                ActivityUtils.startActivity(this,
                        this.getPackageName(),
B
Blankj 已提交
170
                        SubActivityActivity.class.getName());
B
Blankj 已提交
171 172 173 174
                break;
            case R.id.btn_act_pkg_cls_opt:
                ActivityUtils.startActivity(this,
                        this.getPackageName(),
B
Blankj 已提交
175
                        SubActivityActivity.class.getName(),
B
Blankj 已提交
176 177 178 179 180
                        getOption(random.nextInt(5)));
                break;
            case R.id.btn_act_pkg_cls_shared_element:
                ActivityUtils.startActivity(this,
                        this.getPackageName(),
B
Blankj 已提交
181
                        SubActivityActivity.class.getName(),
B
Blankj 已提交
182 183
                        viewSharedElement);
                break;
B
Blankj 已提交
184 185 186
            case R.id.btn_act_pkg_cls_anim:
                ActivityUtils.startActivity(this,
                        this.getPackageName(),
B
Blankj 已提交
187
                        SubActivityActivity.class.getName(),
B
Blankj 已提交
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
                break;
            case R.id.btn_intent:
                ActivityUtils.startActivity(this,
                        intent);
                break;
            case R.id.btn_intent_opt:
                ActivityUtils.startActivity(this,
                        intent,
                        getOption(random.nextInt(5)));
                break;
            case R.id.btn_intent_shared_element:
                ActivityUtils.startActivity(this,
                        intent,
                        viewSharedElement);
                break;
            case R.id.btn_intent_anim:
                ActivityUtils.startActivity(this,
                        intent,
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
                break;
            case R.id.btn_intents:
                ActivityUtils.startActivities(intents);
                break;
            case R.id.btn_intents_opt:
                ActivityUtils.startActivities(intents,
                        getOption(random.nextInt(5)));
                break;
            case R.id.btn_intents_anim:
                ActivityUtils.startActivities(intents,
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
                break;
            case R.id.btn_act_intents:
                ActivityUtils.startActivities(this,
                        intents,
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
                break;
            case R.id.btn_act_intents_opt:
                ActivityUtils.startActivities(this,
                        intents,
B
Blankj 已提交
228
                        getOption(random.nextInt(5)));
B
Blankj 已提交
229 230 231 232 233 234
                break;
            case R.id.btn_act_intents_anim:
                ActivityUtils.startActivities(this,
                        intents,
                        R.anim.fade_in_1000, R.anim.fade_out_1000);
                break;
B
Blankj 已提交
235 236
            case R.id.btn_start_home_activity:
                ActivityUtils.startHomeActivity();
B
Blankj 已提交
237
                break;
B
Blankj 已提交
238 239 240 241 242 243
            case R.id.btn_finish_activity:
                ActivityUtils.finishActivity(MainActivity.class);
                break;
            case R.id.btn_finish_to_activity:
                ActivityUtils.finishToActivity(MainActivity.class, false, true);
                break;
B
Blankj 已提交
244
            case R.id.btn_finish_all_activities:
B
Blankj 已提交
245
                ActivityUtils.finishAllActivities();
C
cmj 已提交
246 247 248
                break;
        }
    }
B
Blankj 已提交
249 250

    private Bundle getOption(int type) {
B
Blankj 已提交
251
        LogUtils.d(type);
B
Blankj 已提交
252
        switch (type) {
B
Blankj 已提交
253
            case 0:
B
Blankj 已提交
254 255
                return ActivityOptionsCompat.makeCustomAnimation(this,
                        R.anim.slide_in_right_1000,
B
Blankj 已提交
256 257 258 259 260 261 262 263
                        R.anim.slide_out_left_1000)
                        .toBundle();
            case 1:
                return ActivityOptionsCompat.makeScaleUpAnimation(viewSharedElement,
                        viewSharedElement.getWidth() / 2,
                        viewSharedElement.getHeight() / 2,
                        0, 0)
                        .toBundle();
B
Blankj 已提交
264
            case 2:
B
Blankj 已提交
265 266 267 268
                return ActivityOptionsCompat.makeThumbnailScaleUpAnimation(viewSharedElement,
                        bitmap,
                        0, 0)
                        .toBundle();
B
Blankj 已提交
269
            case 3:
B
Blankj 已提交
270 271 272 273 274
                return ActivityOptionsCompat.makeSceneTransitionAnimation(this,
                        viewSharedElement,
                        getString(R.string.activity_shared_element))
                        .toBundle();
            case 4:
B
Blankj 已提交
275 276 277 278 279
                return ActivityOptionsCompat.makeClipRevealAnimation(viewSharedElement,
                        viewSharedElement.getWidth() / 2,
                        viewSharedElement.getHeight() / 2,
                        0, 0)
                        .toBundle();
B
Blankj 已提交
280 281
            default:
                return null;
B
Blankj 已提交
282 283
        }
    }
B
Blankj 已提交
284
}