HxProgressDialog
public class HxProgressDialog extends Dialog {
public HxProgressDialog(Context context) {
super(context);
}
public HxProgressDialog(Context context, int theme) {
super(context, theme);
}
public void setMessage(CharSequence message) {
if(message != null && message.length() > 0) {
findViewById(R.id.message).setVisibility(View.VISIBLE);
TextView txt = (TextView)findViewById(R.id.message);
txt.setText(message);
txt.invalidate();
}
}
public static HxProgressDialog show(Context context, CharSequence message, boolean indeterminate, boolean cancelable,
OnCancelListener cancelListener) {
HxProgressDialog dialog = new HxProgressDialog(context, R.style.ProgressDialog);
dialog.setTitle("");
dialog.setContentView(R.layout.progress_dialog);
if(message == null || message.length() == 0) {
dialog.findViewById(R.id.message).setVisibility(View.GONE);
} else {
TextView txt = (TextView)dialog.findViewById(R.id.message);
txt.setText(message);
}
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(cancelable);
dialog.setOnCancelListener(cancelListener);
dialog.getWindow().getAttributes().gravity= Gravity.CENTER;
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount=0.2f;
dialog.getWindow().setAttributes(lp);
dialog.show();
return dialog;
}
}
progress_dialog.xml
<?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:layout_gravity="center"
android:gravity="center_horizontal"
android:background="@drawable/progress_dialog_bg"
android:orientation="horizontal"
android:padding="20dp">
<com.hongxue.volley.widget.ProgressImageView
android:id="@+id/spinnerImageView"
android:layout_width="32dp"
android:layout_height="32dp" />
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="10dp"
android:text="Message"
android:visibility="gone"
android:textColor="#FFFFFF" />
</LinearLayout>
style.xml->ProgressDialog
<style name="ProgressDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
</style>
ProgressImageView
public class ProgressImageView extends ImageView {
public ProgressImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public ProgressImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public ProgressImageView(Context context) {
super(context);
init();
}
private void init() {
setBackgroundResource(R.drawable.spinner);
final AnimationDrawable frameAnimation = (AnimationDrawable) getBackground();
post(new Runnable(){
public void run(){
frameAnimation.start();
}
});
}
}
spinner.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
android:drawable="@drawable/spinner_0"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_1"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_2"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_3"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_4"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_5"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_6"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_7"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_8"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_9"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_10"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_11"
android:duration="60"/>
</animation-list>