效果图:
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
/**主要的loading对话框
*/
public class DefaultLoadingDialog extends AlertDialog {
private int layoutId;
public Context context;
public DefaultLoadingDialog(Context context) {
super(context);
this.context = context;
}
@SuppressLint("ResourceType")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
layoutId = R.layout.loading_alert;
setContentView(layoutId);
// ((View)bar.getParent().getParent().getParent()).setBackgroundColor(Color.LTGRAY);
/**设置透明度*/
Window window = getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;// 透明度
lp.dimAmount = 0f;// 黑暗度
//这两行,处理部分机型不对称居中的问题
lp.width = (int) (context.getResources().getDisplayMetrics().widthPixels * 0.95); // 宽度设置为屏幕的0.95
lp.gravity = Gravity.CENTER;//设置位置
window.setAttributes(lp);
window.getDecorView().setBackgroundResource(Color.TRANSPARENT);
setCanceledOnTouchOutside(false);
setCancelable(false);
}
}
布局文件loading_alert.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">
<ProgressBar
android:id="@+id/progressBar1"
style="@style/AppTheme.NoActionBar"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center_horizontal"
android:indeterminateDrawable="@drawable/loadingbar" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/progressBar1"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="@string/brvah_loading"
android:textColor="@color/font_dark_gray"
android:visibility="gone"
/>
</RelativeLayout>
加载loainng样式:
loadingbar.xml
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false">
<gradient
android:centerColor="#7f919191"
android:centerY="0.50"
android:endColor="#00919191"
android:startColor="#ff919191"
android:type="sweep"
android:useLevel="false" />
</shape>
</animated-rotate>
使用:
DefaultProgressDialog mDefaultProgressDialog;
if (mDefaultLoadingDialog == null)
mDefaultLoadingDialog = new DefaultLoadingDialog(mContext);
mDefaultProgressDialog.show();
if (mDefaultLoadingDialog != null) {
mDefaultLoadingDialog.dismiss();
mDefaultLoadingDialog = null;
}