在項(xiàng)目中經(jīng)常會(huì)用到底部彈出框或者其他地方的彈出框评凝,今天用到了 Dialog 來(lái)實(shí)現(xiàn)(以前都是用 pw 實(shí)現(xiàn)的)坯钦,在此記錄下蟀苛。這個(gè)很簡(jiǎn)單的益咬。只需要 5 步就可以完成。
效果:
步驟如下:
(1)創(chuàng)建一個(gè) Dialog:
mDialog = new Dialog( MainActivity.this, R.style.dialog );
主題設(shè)置如下:
<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)設(shè)置寬高度
mDialog.setContentView( R.layout.dialog_view );// 設(shè)置View
mDialog.setCanceledOnTouchOutside( true ); // 設(shè)置點(diǎn)擊外部消失
LayoutParams layoutParams = getWindow().getAttributes();
Window window = mDialog.getWindow();
LayoutParams attributes = window.getAttributes();
layoutParams.height = attributes.height;// 獲取Dialog View的高度帜平,設(shè)置高度,View 的高度
layoutParams.width = layoutParams.width;// 設(shè)置寬度幽告,是屏幕的寬度
(3)設(shè)置彈出位置
int gravity = Gravity.BOTTOM;// 底部彈出
window.setGravity( gravity );
window.setLayout( layoutParams.width, layoutParams.height );
(4)設(shè)置彈出動(dòng)畫(huà)
window.setWindowAnimations( R.style.myStyle );//設(shè)置彈出動(dòng)畫(huà)
動(dòng)畫(huà)樣式:
<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();