您的位置:首页 > 其它

全局ProgressDialog---DialogManager

2016-05-28 10:52 423 查看
public class ProgressDialog extends Dialog {

private Context mContext;

private String mMessage;

private int mLayoutId;

private TextView message;

private com.rey.material.widget.ProgressView progressView;

public ProgressDialog(Context context, int style, int layout) {
super(context, style);
mContext = context;
mLayoutId = layout;
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.width = WindowManager.LayoutParams.FILL_PARENT;
layoutParams.height = WindowManager.LayoutParams.FILL_PARENT;
getWindow().setAttributes(layoutParams);
}

public ProgressDialog(Context context, int layout, String msg) {
this(context, R.style.easy_dialog_style, layout);
setMessage(msg);

}

public ProgressDialog(Context context, String msg) {
this(context, R.style.easy_dialog_style, R.layout.dialog_easy_progress);
setMessage(msg);
}

public void updateLoadingMessage(String msg) {
mMessage = msg;
showMessage();
}

public void setMessage(String msg) {
mMessage = msg;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(mLayoutId);
progressView = (com.rey.material.widget.ProgressView) findViewById(R.id.easy_progress_bar);
message = (TextView) findViewById(R.id.easy_progress_dialog_message);
showMessage();
progressView.start();
}

protected void showMessage() {
if (message != null && !TextUtils.isEmpty(mMessage)) {
message.setVisibility(View.VISIBLE);
message.setText(mMessage);
}
}
}

XML

<FrameLayout 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:layout_gravity="center"
android:background="@drawable/nim_dialog_toast_bg"
android:gravity="center">

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

<com.rey.material.widget.ProgressView
android:id="@+id/easy_progress_bar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
app:v_styleId="@array/pv_circular"/>

<TextView
android:id="@+id/easy_progress_dialog_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/easy_progress_bar"
android:layout_centerHorizontal="true"
android:gravity="center"
android:paddingTop="14dip"
android:textColor="@android:color/white"
android:textSize="18sp"
android:visibility="gone"/>
</RelativeLayout>

</FrameLayout>
Style
<style name="easy_dialog_style" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<!-- 边框 -->
<item name="android:windowIsFloating">true</item>
<!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">true</item>
<!-- 半透明 -->
<item name="android:windowNoTitle">true</item>
<!-- 无标题 -->
<item name="android:windowBackground">@color/transparent</item>
<!-- 背景透明 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 后面的activity变暗 -->
</style>
Dialog 全局管理

public class DialogManager {
private static ProgressDialog bejiaProgressDialog;

public static ProgressDialog showProgressDialog(Context context, String message) {

4000
return showProgressDialog(context, null, message, true, null);
}

public static ProgressDialog showProgressDialog(Context context, String message, boolean cancelable) {
return showProgressDialog(context, null, message, cancelable, null);
}

@Deprecated
public static ProgressDialog showProgressDialog(Context context, String title, String message, boolean canCancelable, DialogInterface
.OnCancelListener listener) {
if (bejiaProgressDialog == null) {
bejiaProgressDialog = new ProgressDialog(context, message);
} else if (bejiaProgressDialog.getContext() != context) {
LogUtil.e("dialog", "there is a leaked window here,orign context: "
+ bejiaProgressDialog.getContext() + " now: " + context);
dismissProgressDialog();
bejiaProgressDialog = new ProgressDialog(context, message);
}
bejiaProgressDialog.setCancelable(canCancelable);
bejiaProgressDialog.setOnCancelListener(listener);
bejiaProgressDialog.show();
return bejiaProgressDialog;
}

public static void dismissProgressDialog() {
if (bejiaProgressDialog == null) {
return;
}
if (bejiaProgressDialog.isShowing()) {
try {
bejiaProgressDialog.dismiss();
bejiaProgressDialog = null;
} catch (Exception e) {

}
}
}

public static void setMessage(String message) {
if (null != bejiaProgressDialog && bejiaProgressDialog.isShowing()
&& !TextUtils.isEmpty(message)) {
bejiaProgressDialog.setMessage(message);
}
}

public static void updateLoadingMessage(String message) {
if (null != bejiaProgressDialog && bejiaProgressDialog.isShowing()
&& !TextUtils.isEmpty(message)) {
bejiaProgressDialog.updateLoadingMessage(message);
}
}

public static boolean isShowing() {
return (bejiaProgressDialog != null && bejiaProgressDialog.isShowing());
}
}

调用方式

DialogManager.showProgressDialog(mContext, null, "登陆中", true, new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (loginRequest != null) {
loginRequest.abort();
onLoginDone();
}
}
}).setCanceledOnTouchOutside(false);


以上内容仿照云信IM中Dialog...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: