애니메이션 dialog

3045 단어
프로젝트의 요구에 따라 불러올 때 애니메이션 효과가 있는 진도를 추가해야 합니다.
가장 먼저 떠오르는 것은 다이어로그를 사용자 정의하고 애니메이션을 추가하면 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();

간단하죠~~~

좋은 웹페이지 즐겨찾기