一个带动画的dialog

根据项目需求需要在加载的时候加入一个带动画效果的进度。

最先想到的就是 自定义一个dialog 再加上一个动画就OK了。


so.....


public class CMYProgressDialog extends Dialog {

    public CMYProgressDialog(Context context) {
        super(context, R.style.CMYProgressDialog);
        setContentView(R.layout.layout_loading);
        getWindow().getAttributes().gravity = Gravity.CENTER;
        setCanceledOnTouchOutside(false);
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        ImageView loadingImage = (ImageView) findViewById(R.id.prodlg_loading_iv);
        AnimationDrawable animation =(AnimationDrawable) loadingImage.getBackground();
        if(animation.isRunning()){
            animation.stop();
        }
        animation.start();
    }

等等  好像还需要一个提示消息什么的  那么就再加一个方法



 public CMYProgressDialog setMessage(String strMessage) {
        TextView tvMsg = (TextView) findViewById(R.id.prodlg_loading_msg);
        if (tvMsg != null) {
            tvMsg.setText(strMessage);
        }
        return this;
    }



XML的文件里是这样的


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:background="@drawable/loading_bg">

    <ImageView
        android:id="@+id/prodlg_loading_iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@anim/progress_loading_anim"
        android:layout_gravity="center_horizontal" />

    <TextView
        android:id="@+id/prodlg_loading_msg"
        style="@style/cmy_text_default"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="100dp"
        android:text="@string/common_str_loading_tip"
        android:textColor="@color/white" />

</FrameLayout>

这是ImageView中的动画


<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">

    <item
        android:drawable="@drawable/img_progress_01"
        android:duration="300" />
    <item
        android:drawable="@drawable/img_progress_02"
        android:duration="300" />
    <item
        android:drawable="@drawable/img_progress_03"
        android:duration="300" />
    <item
        android:drawable="@drawable/img_progress_04"
        android:duration="300" />
</animation-list>

在需要用到的地方只要


 if (mProgressDialog == null) {
                mProgressDialog = new CMYProgressDialog(mContext);
            }
            mProgressDialog.show();

是不是很简单~~~



你可能感兴趣的:(一个带动画的dialog)