是dialog成为系统级,点home键也不会消失,父activity销毁也不会消失,多用于系统升级
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
Dialog的style例子
<style name="CustomTheme" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:gravity">center</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:background">@android:color/transparent</item>
</style>
特制的Dialog,带动画、背景透明、位置任意
mDialog = new Dialog(context, R.style.ShareMenuDialog);
mDialog.setContentView(view);
mDialog.setCanceledOnTouchOutside(true);
Window window = mDialog.getWindow();
window.setGravity(Gravity.BOTTOM); //设置位于底部
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //设置背景为透明色
window.setWindowAnimations(R.style.ShareAnimation); //设置动画
WindowManager.LayoutParams mParams = mDialog.getWindow().getAttributes(); //获取属性
WindowManager windowManager =(WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
mParams.width = (int) (display.getWidth() * 1.0); //设置宽为屏幕宽度
mDialog.getWindow().setAttributes(mParams); //设置属性
mDialog.show();
<resources>
<!-- Application theme. -->
<style name="AppTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
<!-- 对话框样式-->
<style name="ShareMenuDialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<!--对话框动画-->
<style name="ShareAnimation" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/kk_menu_in</item>
<item name="android:windowExitAnimation">@anim/kk_menu_out</item>
</style>
</resources>
/* anim/kk_menu_in.xml */
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" >
<translate
android:duration="500"
android:fromYDelta="100%p"
android:toYDelta="0" />
</set>
/* anim/kk_menu_out.xml */
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator" >
<translate
android:duration="500"
android:fromYDelta="0"
android:toYDelta="100%p" />
</set>