在项目中经常会用到底部弹出框或者其他地方的弹出框,今天用到了 Dialog 来实现(以前都是用 pw 实现的),在此记录下。这个很简单的。只需要 5 步就可以完成。
效果:
步骤如下:
(1)创建一个 Dialog:
mDialog = new Dialog( MainActivity.this, R.style.dialog );
主题设置如下:
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:background">#FFFFFF</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowBackground">@android:color/transparent </item>
</style>
(2)设置宽高度
mDialog.setContentView( R.layout.dialog_view );// 设置View
mDialog.setCanceledOnTouchOutside( true ); // 设置点击外部消失
LayoutParams layoutParams = getWindow().getAttributes();
Window window = mDialog.getWindow();
LayoutParams attributes = window.getAttributes();
layoutParams.height = attributes.height;// 获取Dialog View的高度,设置高度,View 的高度
layoutParams.width = layoutParams.width;// 设置宽度,是屏幕的宽度
(3)设置弹出位置
int gravity = Gravity.BOTTOM;// 底部弹出
window.setGravity( gravity );
window.setLayout( layoutParams.width, layoutParams.height );
(4)设置弹出动画
window.setWindowAnimations( R.style.myStyle );//设置弹出动画
动画样式:
<style name="myStyle" parent="android:Animation">
<item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="@android:windowExitAnimation">@anim/dialog_exit</item>
</style>
dialog_enter:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="100%p" />
</set>
dialog_exit:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="400"
android:toYDelta="100%p" />
</set>
(5)最后:弹出 Dialog
mDialog.show();