1、首先准备好图片资源,写一个自定义的drawable(progress_drawable_white),实现动画功能。
<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="83" android:drawable="@drawable/ic_loading_white_01" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_02" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_03" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_04" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_05" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_06" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_07" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_08" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_09" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_10" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_11" />
<item android:duration="83" android:drawable="@drawable/ic_loading_white_12" />
</animation-list>
2、布局文件是少不了的,接着。。。(dialog_my)
<?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:background="@drawable/ic_loading_bg"
android:gravity="center"
android:orientation="vertical"
android:padding="16.0dip" >
<ProgressBar
android:layout_width="30.0dip"
android:layout_height="30.0dip"
android:indeterminateDrawable="@drawable/progress_drawable_white" />
<TextView
android:id="@+id/id_tv_loadingmsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="8.0dip"
android:textColor="#fff"
android:textSize="16.0dip" />
</LinearLayout>
3、res包下values包需要之定义style(style_dialog)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="progress_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@null</item>
<item name="android:windowBackground">@null</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
4、BaseActivity中书写公共的方法,以后项目中所有的Activity只要继承BaseActivity,只需调用方法就行了。加载提示的内容我写了两种,可以这样用,十分方便。
package com.sunday.myprogresdialog;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.widget.TextView;
public class BaseActivity extends Activity {
private Dialog progressDialog;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
*
* @Description: TODO 自定义加载提示内容
* @param @param id
* @return void 用法buildProgressDialog(R.string.loding)
* @throws
* @author Sunday
* @date 2015年12月25日
*/
public void buildProgressDialog(int id) {
if (progressDialog == null) {
progressDialog = new Dialog(this, R.style.progress_dialog);
}
progressDialog.setContentView(R.layout.dialog_my);
progressDialog.setCancelable(true);
progressDialog.getWindow().setBackgroundDrawableResource(
android.R.color.transparent);
TextView msg = (TextView) progressDialog
.findViewById(R.id.id_tv_loadingmsg);
msg.setText(getString(id));
progressDialog.show();
}
/**
* @Description: TODO 固定加载提示内容
* @author Sunday
*/
public void buildProgressDialog() {
if (progressDialog == null) {
progressDialog = new Dialog(this, R.style.progress_dialog);
}
progressDialog.setContentView(R.layout.dialog_my);
progressDialog.setCancelable(true);
progressDialog.getWindow().setBackgroundDrawableResource(
android.R.color.transparent);
TextView msg = (TextView) progressDialog
.findViewById(R.id.id_tv_loadingmsg);
msg.setText("卖力加载中");
progressDialog.show();
}
/**
* @Description: TODO 取消加载框
* @author Sunday
* @date 2015年12月25日
*/
public void cancelProgressDialog() {
if (progressDialog != null) {
progressDialog.dismiss();
}
}
}
5、只需调用buildProgressDialog()和cancelProgressDialog()就能实现加载和取消了。
项目效果图
项目下载地址