android 自定义带进度条Dialog---2
自定义dialog的弹窗,请参照下面的网址:
https://blog.****.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
<?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);