1、概述
android 开发 自定义dialog 是太常见了。简单的使用系统的AlertDialog配合几种主题就可以了,只是产品一般不会这么给程序猿好过的。 在自定义dialog的时候常用的几个点记录下
2、常用自定义dialog的几个点
a) 背景颜色主题是否半透明
<!-- 背后半透明 --> <style name="dialog_half_transparent" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <!-- 悬浮 --> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@android:color/transparent</item> <!-- 背景透明 --> <item name="android:backgroundDimEnabled">true</item> <!-- 被盖界面半透明 --> </style> <!-- 背后半透明 --> <style name="dialog_all_transparent" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <!-- 悬浮 --> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@android:color/transparent</item> <!-- 背景透明 --> <item name="android:backgroundDimEnabled">false</item> <!-- 被盖界面半透明 --> </style>
b) 点击dialog 区域外弹框是否消失
dialog.setCancelable(false);dialog.setCanceledOnTouchOutsid
c) 在dialog弹框后监听返回按键
对应返回值 true 拦截,false继续传递
True if the listener has consumed the event, false otherwise.
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
//TODO:业务逻辑
return true;
}
return false;
}
});
3、注意点
ps: 注意下dialog的风格主题里有很多限制,和popwindow进行比较,有些时候是使用popwindow更合适就是了。