Android 自动滚动展示+ 进度条的dialog

XML布局 dialog_rage_progress
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<com.zlkj.Mok.view.CircleProgressBar
android:id="@+id/cpb_rageDialog"
android:layout_width="@dimen/dp_200"
android:layout_height="@dimen/dp_200"
android:layout_marginTop="@dimen/dp_20" />
<ViewFlipper
android:id="@+id/vf_rageDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:inAnimation="@anim/anim_in"
android:outAnimation="@anim/anim_out" />
</RelativeLayout>
</RelativeLayout>
Dialog
package com.zlkj.Mok.view;
import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ViewFlipper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.zlkj.Mok.R;
import java.util.List;
public class RageDialog extends Dialog {
public RageDialog(@NonNull Context context) {
super(context);
}
public RageDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
}
protected RageDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
public static class Builder {
private Context context;
private List<String> list;
private OnProgressEnd onProgressEnd;
private ViewFlipper viewFlipper;
private CircleProgressBar progressBar;
public void setOnProgressEnd(OnProgressEnd onProgressEnd) {
this.onProgressEnd = onProgressEnd;
}
public Builder(Context context) {
this.context = context;
}
public void setFipperList(List<String> list) {
this.list = list;
}
public RageDialog create() {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final RageDialog dialog = new RageDialog(context, R.style.dialogTransparent);
View layout = inflater.inflate(R.layout.dialog_rage_progress, null);
dialog.addContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
progressBar = layout.findViewById(R.id.cpb_rageDialog);
viewFlipper = layout.findViewById(R.id.vf_rageDialog);
if (null != list && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
View view = inflater.inflate(R.layout.item_rage_viewfipper, null);
TextView tv1 = view.findViewById(R.id.tv1_rageFlipper);
TextView tv2 = view.findViewById(R.id.tv2_rageFlipper);
TextView tv3 = view.findViewById(R.id.tv3_rageFlipper);
if (i == 0) {
tv1.setText(list.get(list.size()-1));
tv2.setText(list.get(i));
tv3.setText(list.get(i + 1));
} else if (i == list.size() - 1) {
tv1.setText(list.get(i - 1));
tv2.setText(list.get(i));
tv3.setText(list.get(0));
} else {
tv1.setText(list.get(i - 1));
tv2.setText(list.get(i));
tv3.setText(list.get(i + 1));
}
viewFlipper.addView(view);
}
}
viewFlipper.setFlipInterval(500);
viewFlipper.startFlipping();
progressBar.setCountdownTime(5 * 1000);
progressBar.startCountDownTime(new CircleProgressBar.OnCountdownFinishListener() {
@Override
public void countdownFinished() {
if (null != onProgressEnd) {
onProgressEnd.progressEnd();
}
}
});
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
return dialog;
}
}
public interface OnProgressEnd {
void progressEnd();
}
}
调用
private List<String> list = new ArrayList<>();
list.add("sddsf1");
list.add("dsss");
list.add("fdsdfsd");
list.add("gvdgdsgd");
list.add("gggg");
list.add("dgdfhdf");
list.add("cxvxdg");
list.add("ewttwdsg");
list.add("jfgjdj");
list.add("kgfjf");
RageDialog.Builder builder = new RageDialog.Builder(this);
builder.setFipperList(list);
builder.setOnProgressEnd(new RageDialog.OnProgressEnd() {
@Override
public void progressEnd() {
vibrator.cancel();
RxActivityTool.skipActivity(HomeActivity.this, RageHomeActivity.class);
overridePendingTransition(0, 0);
}
});
builder.create().show();