上图是dialog的效果图,以下为代码:
Java类:
package com.jmheart.mechanicsbao.ui.util;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.TextView;
import com.jmheart.mechanicsbao.R;
/**
* 作者:chenqian on 2017/4/20 0020 13:56
* 邮箱: [email protected]
*/
public class ProgressDialog extends AlertDialog {
private String messageT="正在加载...";
public ProgressDialog(Context context) {
super(context,R.style.AppCompatAlertDialogStyle);
}
public ProgressDialog(Context context,int themeResId) {
super(context,themeResId);
}
public ProgressDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progressdialog);
((TextView) findViewById(R.id.message)) .setText(messageT);
}
public void setMessage(String str){
if(!TextUtils.isEmpty(str)){
messageT=str;
}
}
public void setOutside(boolean out){
this.setCanceledOnTouchOutside(out);
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:background="@drawable/progressdialog"
android:baselineAligned="false"
android:paddingStart="25dp"
android:paddingTop="20dp"
android:paddingEnd="25dp"
android:paddingBottom="20dp">
<ProgressBar android:id="@android:id/progress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="10000"
/>
<TextView android:id="@+id/message"
android:layout_width="wrap_content"
android:text="正在加载..."
android:paddingTop="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:textColor="#d9d9d9"
android:layout_height="wrap_content"
android:gravity="center_horizontal"/>
</LinearLayout>
</FrameLayout>
选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="10dp"></corners>
<solid android:color="#80000000"></solid>
</shape>
</item>
</selector>
style代码
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
定制款loading对话框:
效果如上,图片可以网上自己找,改一下图片资源即可
下面附上代码:
java代码:
/** * 得到自定义的progressDialog * @param context * @return */ public Dialog createLoadingDialog(Context context) { LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.loading_dialog, null,false);// 得到加载view LinearLayout layout = (LinearLayout) v.findViewById(R.id.layout_dialog_view);// 加载布局 // main.xml中的ImageView ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img); // 加载动画 Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation( context, R.anim.loading_animation); // 使用ImageView显示动画 spaceshipImage.startAnimation(hyperspaceJumpAnimation); Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog /* Display display = this.getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight();*/ //loadingDialog.setCancelable(false);// 不可以用“返回键”取消 loadingDialog.setContentView(layout, new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));// 设置布局 return loadingDialog; }xml代码:
layout.loading_dialog:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_dialog_view" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:minHeight="60dp" android:minWidth="180dp" android:gravity="center" android:padding="10dp" android:background="@color/colorwhite" > <ImageView android:id="@+id/img" android:layout_width="100dp" android:layout_height="100dp" android:src="@mipmap/ic_loading" /> </LinearLayout>
anim.loading_animation
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1500" android:fromDegrees="0" android:interpolator="@android:anim/linear_interpolator" android:pivotX="50%" android:pivotY="50%" android:repeatCount="-1" android:repeatMode="restart" android:startOffset="-1" android:toDegrees="+360"> </rotate>
style.loading_dialog
<!-- style for loading dialog @{ --> <style name="loading_dialog" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style> <!-- @} -->
如果有疑问请在帖子底下留言,楼主很尽快回复的!
欢迎参观楼主的其他博客!
2018/6/6更新:增加一个菊花加载框布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_loading_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="150dp"
android:layout_height="110dp"
android:background="@drawable/loading_bg"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="21dp"
android:paddingRight="21dp"
android:paddingTop="10dp">
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center_horizontal"
android:indeterminateBehavior="repeat"
android:indeterminateDrawable="@drawable/dialog_loading"
android:indeterminateOnly="true" />
<TextView
android:id="@+id/tipTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="加载中..."
android:textColor="#f0f0f0"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
资源图片:
drawable.dialog_loading.xml:
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/dialog_loading_img"
android:pivotX="50%"
android:pivotY="50%" />