endian11
2020-09-15 389853ce971a3da0e806dddd909bb43f5928c90c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package safeluck.drive.evaluation.widget;
 
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
 
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;
 
import java.util.Timer;
import java.util.TimerTask;
 
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.customview.MyDialog;
 
/**
 * DriveJudge
 * Created by lzw on 2020/9/15. 10:42:53
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class StatusDialog extends MyWidgetDialog {
 
    private static final String TAG = "StatusDialog";
 
        private Handler mMainHandler = new Handler();
    /**
     * 成功或错误2秒后dismiss
     */
    public static final int DELAY_TIME = 2000;
    private Timer mDelayTimer;
 
    public StatusDialog() {
        super();
    }
 
    public static Builder with(AppCompatActivity activity) {
        return new Builder(activity);
    }
 
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        TextView tvDialogStatusContent = view.findViewById(R.id.tv_dialog_status_prompt);
        ImageView imgDialogStatusShow = view.findViewById(R.id.img_dialog_status_show);
        ProgressBar pbDialogStatusShow = view.findViewById(R.id.pb_dialog_status_show);
 
        //更换圆形进度条颜色
        pbDialogStatusShow.getIndeterminateDrawable()
                .setColorFilter(getResources().getColor(R.color.colorPrimaryDark), PorterDuff.Mode.SRC_ATOP);
 
        //填充数据
        if (isNonEmpty(mDialogParams.prompt)) {
            Log.i(TAG,""+mDialogParams.prompt);
            tvDialogStatusContent.setText(mDialogParams.prompt);
        }
 
        switch (mDialogParams.type) {
            case Type.ERROR:
                pbDialogStatusShow.setVisibility(View.GONE);
                imgDialogStatusShow.setVisibility(View.VISIBLE);
                imgDialogStatusShow.setImageResource(R.mipmap.icon_dialog_error);
                break;
            case Type.SUCCESS:
                pbDialogStatusShow.setVisibility(View.GONE);
                imgDialogStatusShow.setVisibility(View.VISIBLE);
                imgDialogStatusShow.setImageResource(R.mipmap.icon_dialog_success);
                break;
            case Type.PROGRESS:
                imgDialogStatusShow.setVisibility(View.GONE);
                pbDialogStatusShow.setVisibility(View.VISIBLE);
                break;
        }
    }
    public interface Type {
 
        int PROGRESS = 0x000000000211;
 
        int ERROR = 0x000000000985;
 
        int SUCCESS = 0x00000000011;
 
    }
    @Override
    protected int setLayoutRes() {
        return R.layout.dialog_status;
    }
    @Override
    public void dismiss() {
        super.dismiss();
        cancelTimer();
    }
 
    @Override
    public void onPause() {
        super.onPause();
        cancelTimer();
    }
    private void cancelTimer() {
        if (mDelayTimer != null) {
            mDelayTimer.cancel();
        }
    }
 
    protected boolean setCancelable() {
        return mDialogParams.isCancelable;
    }
    @Override
    public void onStart() {
        super.onStart();
        /**
         * 显示定时间后自动dismiss
         */
        if (mDialogParams.type == Type.SUCCESS || mDialogParams.type == Type.ERROR) {
            cancelTimer();
            mDelayTimer = new Timer();
            mDelayTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                    mMainHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            dismiss();
                        }
                    });
                }
            }, DELAY_TIME);
        }
    }
    public static class Builder {
        AppCompatActivity activity;
        DialogParams P;
        StatusDialog progressDialog;
 
        public Builder(AppCompatActivity activity) {
            progressDialog = new StatusDialog();
            this.P = progressDialog.mDialogParams;
            this.activity = activity;
        }
 
        public Builder setPrompt(String val) {
            P.prompt = val;
            return this;
        }
 
        public Builder setCancelable(boolean val) {
            P.isCancelable = val;
            return this;
        }
 
        public Builder setType(int val) {
            P.type = val;
            return this;
        }
 
        public StatusDialog show() {
            if (P.type == -1) {
                throw new IllegalArgumentException("Please set type");
            }
            progressDialog.show(activity);
            return progressDialog;
        }
 
    }
}