package com.parttime.widget; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.res.Resources; import android.graphics.drawable.AnimationDrawable; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; import com.qingmu.jianzhidaren.R; /** * Created by cjz on 2015/8/8. */ public class AnimDialog extends Dialog{ private static int default_width = 200; // 默认宽度 private static int default_height = 200;// 默认高度 private OnShowListener onShowListener; private ImageView ivAnim; public AnimDialog(Context context, int anim) { this(context, default_width, default_height, anim, R.style.wait_dialog_style); } public AnimDialog(Context context, int anim, int style) { this(context, default_width, default_height, anim, style); } public AnimDialog(Context context, int width, int height, int anim, int style) { super(context, style); // set content View view = LayoutInflater.from(context).inflate(R.layout.dlg_ani, null); ivAnim = (ImageView) view.findViewById(R.id.iv_anim); // ivAnim.setBackgroundResource(anim); ivAnim.setImageResource(anim); setContentView(view); // set window params Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); // set width,height by density and gravity float density = getDensity(context); params.width = (int) (width * density); params.height = (int) (height * density); params.gravity = Gravity.CENTER; window.setAttributes(params); super.setOnShowListener(new OnShowListener() { @Override public void onShow(DialogInterface dialog) { AnimationDrawable anim = (AnimationDrawable) ivAnim.getDrawable(); anim.setOneShot(true); anim.start(); onShowListener.onShow(dialog); } }); } @Override public void setOnShowListener(OnShowListener listener) { onShowListener = listener; } private float getDensity(Context context) { Resources resources = context.getResources(); DisplayMetrics dm = resources.getDisplayMetrics(); return dm.density; } }