android 自定义带进度条Dialog---2

自定义dialog的弹窗,请参照下面的网址:

https://blog.csdn.net/qq_21445563/article/details/86503545

第一步定义style

 <style name="NoTitleDialog" parent="Theme.AppCompat.Light.Dialog">
        <!--没有标题-->
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <!--背景透明-->
        <item name="android:windowIsTranslucent">true</item>
        <!--是否有覆盖-->
        <item name="android:windowContentOverlay">@null</item>
        <!--是否浮动-->
        <item name="android:windowIsFloating">true</item>
        <!--边框-->
        <item name="android:windowFrame">@null</item>
        <!--背景:透明-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!--dialog的整个屏幕的背景是否有遮障层-->
        <item name="android:backgroundDimEnabled">true</item>
        <!--是否全屏显示-->
        <item name="android:windowFullscreen">true</item>
        <!--动画-->
        <!--<item name="android:windowAnimationStyle">@style/AnimSlideBottom</item>-->
    </style>

第二部:定义带进度条的Dialog页面dialog_bt_sys_ing.xml

android 自定义带进度条Dialog---2

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#00000000">

    <LinearLayout
        android:layout_width="338dp"
        android:layout_height="280dp"
        android:layout_centerInParent="true"
        android:background="@drawable/bg_bt_exit_dialog"
        android:gravity="center"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ProgressBar
                android:id="@+id/progress"
                android:layout_width="100px"
                android:layout_height="100px"
                android:indeterminateDrawable="@drawable/dialog_sys_progress"
                android:max="100"
                android:progress="0" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/tvPercentage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="00"
                    android:textColor="@color/color_ffffff"
                    android:textSize="28px" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="%"
                    android:textColor="@color/color_ffffff"
                    android:textSize="24px" />

            </LinearLayout>

        </RelativeLayout>

        <TextView
            android:id="@+id/tvShow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16px"
            android:gravity="center_horizontal"
            android:lineSpacingExtra="6px"
            android:text="正在同步,请稍后..."
            android:textColor="@color/color_ffffff"
            android:textSize="18px" />


    </LinearLayout>

</RelativeLayout>

第三部;定义控件Dialog---BTSyncharonizationDialog.java

package com.lym.bluetoothphone.view;

import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.wdjr.bluetoothphone.R;
import com.wdjr.bluetoothphone.utils.CustomClickListener;


/**
 * @content: 蓝牙数据同步中
 * @author: liyanmei
 * @time: 2018/12/29
 * @email: [email protected]
 * <p>
 * todo 进度条的背景色不对
 */
public class BTSyncharonizationDialog extends Dialog {

    private static final String TAG = "BTSyncharonizationDialog";

    private boolean cancelable = true;
    private View mParentView;
    private TextView tvShow;
    private String textHint;
    private ProgressBar progress;
    private TextView tvPercentage;

    public BTSyncharonizationDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
    }

    public BTSyncharonizationDialog(@NonNull Context context, int themeResId, boolean cancelable, String textHint) {
        super(context, themeResId);
        this.cancelable = cancelable;
        this.textHint = textHint;

    }

    public BTSyncharonizationDialog(@NonNull Context context) {
        super(context);
    }


    @SuppressLint("LongLogTag")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
        initView();
    }

    private void initView() {
//        setContentView(R.layout.dialog_usb_ext);

        mParentView = getLayoutInflater().inflate(R.layout.dialog_bt_sys_ing, null);

        setContentView(mParentView);
        setCancelable(cancelable);

        tvShow = mParentView.findViewById(R.id.tvShow);
        progress = mParentView.findViewById(R.id.progress);
        tvPercentage = mParentView.findViewById(R.id.tvPercentage);
        tvShow.setText(textHint);

    }

    public void setTextHint(String textHint) {
        this.textHint = textHint;
        if (tvShow != null)
            tvShow.setText(textHint);
    }

    public void setPercentage(int percentage) {

        if (percentage == 100 && this.isShowing()) {
            this.dismiss();
        }

        if (progress != null)
            progress.setProgress(percentage);
        if (tvPercentage != null)
            tvPercentage.setText(percentage + "");
    }

    @Override
    public void dismiss() {
        super.dismiss();
    }


}

最后一步:引用定义的dialog

 syncharonizationDialog = new BTSyncharonizationDialog(context, R.style.NoTitleDialog, false, Constacts.HINT_BT_SYS_ING);

// 显示进度条 :
    if (syncharonizationDialog != null && !syncharonizationDialog.isShowing())
                                syncharonizationDialog.show();

// 设置显示的百分比
syncharonizationDialog.setPercentage(percentage);