Android开发之Dialog对话框(弹框)工具类
生活随笔
收集整理的這篇文章主要介紹了
Android开发之Dialog对话框(弹框)工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
公司項目里面扣出來的
我們來看下彈框效果
直接上代碼
ScreenSizeUtils.java package 導入自己的包;import android.content.Context; import android.graphics.Point; import android.view.Display; import android.view.WindowManager;/*** 獲取屏幕尺寸信息**/ public class ScreenSizeUtils {public static Point getScreenSizeInfo(Context context) {WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = null;if (manager != null) {display = manager.getDefaultDisplay();Point sizePoint = new Point();display.getSize(sizePoint);return sizePoint;} else {return null;}}} LoadingDialog.java package 導入自己報名即可;import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Point; import android.text.TextUtils; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.ProgressBar; import android.widget.TextView;import 導入自己報名.ScreenSizeUtils;/*** 加載進度條Dialog** @author on 2018/9/17.*/ public class LoadingDialog extends Dialog {private LoadingDialog(Context context) {super(context, R.style.loading_dialog_style);}public static class Builder {private Context mContext;private CharSequence mMessage;private View mContentView;private float mWidthPercent = 0.3f;private float mHeightPercent = 0.3f;private boolean mIsCancelable;private boolean mIsOutsideCancelable;private DialogInterface.OnCancelListener mCancelListener;private DialogInterface.OnDismissListener mDismissListener;public Builder(Context context) {mContext = context;}public Builder setMessage(CharSequence message) {mMessage = message;return this;}public Builder setContentView(View view) {mContentView = view;return this;}/*** 設置dialog寬** @param widthPercent 占屏幕寬度百分比 0 - 1* @return builder*/public Builder setWidthPercent(float widthPercent) {mWidthPercent = widthPercent;return this;}/*** 設置dialog高** @param heightPercent 占屏幕高度百分比 0 - 1* @return builder*/public Builder setHeightPercent(float heightPercent) {mHeightPercent = heightPercent;return this;}public Builder setLoadingCancelable(boolean cancelable) {mIsCancelable = cancelable;return this;}public Builder setLoadingOutsideCancelable(boolean cancelable) {mIsOutsideCancelable = cancelable;return this;}public Builder setListener(DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {mCancelListener = cancelListener;mDismissListener = dismissListener;return this;}public LoadingDialog create() {LoadingDialog loadingDialog = new LoadingDialog(mContext);loadingDialog.setCancelable(mIsCancelable);loadingDialog.setCanceledOnTouchOutside(mIsOutsideCancelable);if (null != mCancelListener) {loadingDialog.setOnCancelListener(mCancelListener);}if (null != mDismissListener) {loadingDialog.setOnDismissListener(mDismissListener);}if (null != mContentView) {loadingDialog.setContentView(mContentView);} else {View view = LayoutInflater.from(mContext).inflate(R.layout.dialog_loading, null);ProgressBar loadingPB = (ProgressBar) view.findViewById(R.id.progress_loading);TextView messageTV = (TextView) view.findViewById(R.id.tv_loading_message);loadingPB.setIndeterminate(false);messageTV.setText(TextUtils.isEmpty(mMessage) ? "加載中..." : mMessage);loadingDialog.setContentView(view);}loadingDialog.show();setWindow(loadingDialog);return loadingDialog;}private void setWindow(LoadingDialog dialog) {//獲取對話框當前的參數值Window window = dialog.getWindow();if (null != window) {WindowManager.LayoutParams lp = window.getAttributes();lp.gravity = Gravity.CENTER;//寬高可設置具體大小Point point = ScreenSizeUtils.getScreenSizeInfo(mContext);if (null != point) {lp.width = (int) ((point.x) * mWidthPercent);lp.height = (int) ((point.x) * mHeightPercent);}window.setAttributes(lp);}}}} LoadingDialogUtils.java package 導入自己的包;import android.content.Context; import android.content.DialogInterface;import 導入自己的包.LoadingDialog;/*** 加載進度條Dialog工具類** @author xlg on 2018/9/17.*/ public final class LoadingDialogUtils {private static LoadingDialog mLoadingDialog;/*** 顯示進度條Dialog** @param context 上下文*/public static void showLoadingDialog(Context context) {show(context, null, true, null, null);}/*** 顯示進度條Dialog** @param context 上下文* @param msg loading顯示的message*/public static void showLoadingDialog(Context context, CharSequence msg) {show(context, msg, true, null, null);}/*** 顯示進度條Dialog** @param context 上下文*/public static void showLoadingDialog(Context context, boolean isCCancel) {show(context, null, isCCancel, null, null);}/*** 顯示進度條Dialog** @param context 上下文* @param msg loading顯示的message*/public static void showLoadingDialog(Context context, CharSequence msg, boolean isCCancel) {show(context, msg, isCCancel, null, null);}/*** 顯示進度條Dialog** @param context 上下文* @param cancelListener 取消Dialog顯示監聽* @param dismissListener Dialog消失監聽*/public static void showLoadingDialog(Context context,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {show(context, null, true, cancelListener, dismissListener);}/*** 顯示進度條Dialog** @param context 上下文* @param cancelListener 取消Dialog顯示監聽* @param dismissListener Dialog消失監聽*/public static void showLoadingDialog(Context context, CharSequence msg,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {show(context, msg, true, cancelListener, dismissListener);}/*** 顯示進度條Dialog** @param context 上下文* @param cancelListener 取消Dialog顯示監聽* @param dismissListener Dialog消失監聽*/public static void showLoadingDialog(Context context, CharSequence msg, boolean isCCancel,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {show(context, msg, isCCancel, cancelListener, dismissListener);}/*** 顯示進度條Dialog** @param context 上下文* @param isCCancel 是否點擊Dialog邊緣取消Dialog* @param cancelListener 取消Dialog顯示監聽* @param dismissListener Dialog消失監聽*/private static void show(Context context, CharSequence message, boolean isCCancel,DialogInterface.OnCancelListener cancelListener,DialogInterface.OnDismissListener dismissListener) {mLoadingDialog = new LoadingDialog.Builder(context).setMessage(message).setLoadingCancelable(isCCancel).setLoadingOutsideCancelable(isCCancel).setListener(cancelListener, dismissListener).create();}/*** 隱藏進度條Dialog* 由于統一管理Dialog,注意Activity/Fragment生命周期對它的影響*/public static void hideLoadingDialog() {if (null != mLoadingDialog) {if (mLoadingDialog.isShowing()) {mLoadingDialog.dismiss();}mLoadingDialog = null;}}}?
總結
以上是生活随笔為你收集整理的Android开发之Dialog对话框(弹框)工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有理有据!苹果在iOS 16中删除动态壁
- 下一篇: 9999 元,雷蛇、小牛电动推出 SQi