CustomProgressDialog // 主要实现
/**
*
* @author alexwan
*
*/
public class CustomProgressDialog extends ProgressDialog {
private static ImageView mImageView;
// 加载时显示的消息
private String mLoadMsg;
//
private TextView mLoadingTv;
// 图片数组id
private static int[] mIds;
// 当前图片index
private static int index = 0;
private CustomProgressDialog(Context context, String content, int[] ids) {
super(context);
this.mLoadMsg = content;
CustomProgressDialog.mIds = ids;
setCanceledOnTouchOutside(true);
}
/**
* 获取CustomProgressDialog实例
* @param context 上下文
* @param content 加载显示的消息
* @param ids 图片数组
* @return
*/
public static CustomProgressDialog getInstance(Context context,
String content, int[] ids) {
return new CustomProgressDialog(context, content, ids);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progress_dialog);
mLoadingTv = (TextView) findViewById(R.id.loadingTv);
mLoadingTv.setText(mLoadMsg);
mImageView = (ImageView) findViewById(R.id.loadingIv);
initData();
}
private void initData() {
try {
//
mImageView.setBackgroundResource(mIds[index]);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void show() {
super.show();
if(mIds.length > 0){
handler.sendEmptyMessage(1);
}
}
@Override
public void dismiss() {
super.dismiss();
handler.sendEmptyMessage(2);
}
private final static Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
int what = msg.what;
switch (what) {
case 1:
index++;
if (index >= mIds.length) {
// 图片的索引置为0
index = 0;
}
try {
mImageView.setBackgroundResource(mIds[index]);
} catch (Exception e) {
e.printStackTrace();
}
handler.sendEmptyMessageDelayed(1, 50);
break;
case 2:
// 移除加载下个动画的handler
handler.removeMessages(1);
index = 0;
break;
default:
break;
}
super.handleMessage(msg);
}
};
}
Xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/loadingIv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/loadingTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/loadingIv"
android:layout_centerHorizontal="true"
android:textSize="20sp"
android:text="努力加载中.." />
</RelativeLayout>
应用
mProgressDialog = CustomProgressDialog.getInstance(this, "正在加载中", new int[] { R.drawable.cat_0001, R.drawable.cat_0002,
R.drawable.cat_0003, R.drawable.cat_0004, R.drawable.cat_0005,
R.drawable.cat_0006, R.drawable.cat_0007, R.drawable.cat_0008,
R.drawable.cat_0009, R.drawable.cat_0010, R.drawable.cat_0011,
R.drawable.cat_0012, R.drawable.cat_0013, R.drawable.cat_0014,
R.drawable.cat_0015, R.drawable.cat_0016, R.drawable.cat_0017,
R.drawable.cat_0018, R.drawable.cat_0019, R.drawable.cat_0020,
R.drawable.cat_0021, R.drawable.cat_0022, R.drawable.cat_0023, });