自己的工具代碼庫https://github.com/BTPJ/LTPViewAndUtils
1.Java代碼
import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
import waternewton.com.oa.R;
/**
* 自定義的LoadingDialog
*
* @author LTP 2017/9/2
*/
public class LoadingDialog extends Dialog {
public LoadingDialog(Context context) {
super(context);
}
private LoadingDialog(Context context, int theme) {
super(context, theme);
}
/**
* 給Dialog設(shè)置提示信息
*
* @param message 顯示信息
*/
public void setMessage(CharSequence message) {
if (message != null && message.length() > 0) {
findViewById(R.id.message).setVisibility(View.VISIBLE);
TextView txt = (TextView) findViewById(R.id.message);
txt.setText(message);
txt.invalidate();
}
}
/**
* 彈出自定義LoadingDialog
*
* @param context 上下文
* @param message 提示文本
* @param cancelable 是否按返回鍵取消
* @param cancelListener 按下返回鍵監(jiān)聽
* @return 自定義的LoadingDialog
*/
public static LoadingDialog show(Context context, CharSequence message, boolean cancelable, OnCancelListener cancelListener) {
LoadingDialog dialog = new LoadingDialog(context, R.style.Custom_Progress);
dialog.setTitle("");
dialog.setContentView(R.layout.dialog_loading);
if (message == null || message.length() == 0) {
dialog.findViewById(R.id.message).setVisibility(View.GONE);
} else {
TextView txt = (TextView) dialog.findViewById(R.id.message);
txt.setText(message);
}
// 按返回鍵是否取消
dialog.setCancelable(cancelable);
// 點擊外部是否取消
dialog.setCanceledOnTouchOutside(false);
// 監(jiān)聽返回鍵處理
dialog.setOnCancelListener(cancelListener);
// 設(shè)置居中
dialog.getWindow().getAttributes().gravity = Gravity.CENTER;
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
// 設(shè)置背景層透明度
lp.dimAmount = 0.2f;
dialog.getWindow().setAttributes(lp);
dialog.show();
return dialog;
}
}
2.LoadingDialog的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/progress_custom_bg"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:paddingTop="20dp">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="加載中..."
android:textColor="#FFFFFF" />
</LinearLayout>
3.styles.xml自定義樣式中添加dialog背景透明的樣式
<!-- 自定義LoadingDialog -->
<style name="Custom_Progress" parent="@android:style/Theme.Dialog">
<!--設(shè)置背景透明(四個圓角邊就不會有背景)-->
<item name="android:windowBackground">@android:color/transparent</item>
</style>
4.可以參考http://blog.csdn.net/tmacadai/article/details/73612120高仿IOS加載