安卓自定义简单loading
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; }