android 自定义dialog 常用的几个点

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.setCanceledOnTouchOutside(false);



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更合适就是了。





你可能感兴趣的:(dialog,自定义dialog,返回键,dialog取消)