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

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);
            // instantiate the dialog with the custom Theme
            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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值