1、添加一个style,命名为: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:windowBackground">@drawable/loading_bg_img</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
其中背景图可以找个透明的,或者其他
2、创建一个动画,这个动画可以使得图片旋转,命名为loading_animation.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<rotate
android:duration="750"
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" />
</set>
3、创建要显示的dialog的布局文件,命名为loading_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loading_dialog_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/loading_dialog_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/loading_img" />
</RelativeLayout>
4、封装MyProgressDialog类
public class MyProgressDialog
{
private MyProgressDialog()
{
}
public static Dialog createProgressDialog(Context context)
{
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view
RelativeLayout layout = (RelativeLayout) v.findViewById(R.id.loading_dialog_layout);// 加载布局
// main.xml中的ImageView
ImageView img = (ImageView) v.findViewById(R.id.loading_dialog_img);
// 加载动画
Animation animation = AnimationUtils.loadAnimation(context, R.anim.loading_animation);
// 使用ImageView显示动画
img.startAnimation(animation);
Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog
loadingDialog.setCancelable(false);// 不可以用“返回键”取消
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));// 设置布局
return loadingDialog;
}
}
5、使用