1.自定义Dialog:
1 import android.app.AlertDialog; 2 import android.app.Dialog; 3 import android.content.Context; 4 import android.view.KeyEvent; 5 import android.view.Window; 6 7 public class HintDialog { 8 9 Dialog mDialog = null; 10 private Context mContext; 11 private IHintDialog mDialogInstance = null; 12 13 /** 14 * 构造函数 15 * @param context 16 */ 17 public HintDialog(Context context) { 18 this.mContext =context; 19 mDialog = new AlertDialog(mContext){ 20 public boolean onKeyDown(int keyCode, KeyEvent event) { 21 if(keyCode == KeyEvent.KEYCODE_BACK && mDialogInstance !=null){ 22 mDialogInstance.onKeyDown(keyCode, event); 23 return true; 24 } 25 return super.onKeyDown(keyCode, event); 26 }; 27 }; 28 mDialog.setCancelable(false); 29 mDialog.setCanceledOnTouchOutside(false); 30 } 31 32 33 /** 34 * 构造函数 35 * @param iLayoutResId 此Dialog采用的自定义布局文件 36 * @param interfaceInstance 此Dialog需要实现的一些接口回调事件 37 */ 38 public void showDialog(int iLayoutResId,IHintDialog interfaceInstance){ 39 if(mDialog == null || iLayoutResId == 0){ 40 return; 41 } 42 mDialogInstance = interfaceInstance; 43 mDialog.show(); 44 mDialog.setContentView(iLayoutResId); 45 Window window = mDialog.getWindow(); 46 if(mDialogInstance!=null){ 47 mDialogInstance.showWindowDetail(window); 48 } 49 } 50 51 /** 52 * 销毁Dialog 53 */ 54 public void dissmissDialog(){ 55 if(mDialog!=null && mDialog.isShowing()){ 56 mDialog.dismiss(); 57 } 58 } 59 60 /** 61 * 判断Dialog是否显示 62 * @return 63 */ 64 public boolean isShowing(){ 65 if(mDialog!=null && mDialog.isShowing()){ 66 return mDialog.isShowing(); 67 } 68 return false; 69 } 70 71 72 /** 73 * 事件回调接口 74 * 75 */ 76 public interface IHintDialog{ 77 public void onKeyDown(int keyCode,KeyEvent event); 78 public void showWindowDetail(Window window); 79 } 80 }