Android中自定義Dialog對話框消除邊距消除黑邊框和顯示動畫

這兩天練習一個項目 顯示對話框類似於QQ發表說說,寬是充滿屏幕的 並且有上下的顯示隱藏動畫 但是AlertDialog默認顯示模式是有邊距的 用了很多方法怎麼也消除不了AlertDialog的邊距 如下圖這樣
這裏寫圖片描述

後來選擇使用Dialog消除了默認邊距的效果 經過修改最終效果如下圖
這裏寫圖片描述
代碼開始 注意是dialog 不是AlertDialog

動畫效果 在res下創建anim文件
顯示時候的動畫

<translate 
xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300"
    android:fromXDelta="0"
    android:fromYDelta="80%p"
    android:toXDelta="0"
    android:toYDelta="0">

    >
</translate>

隱藏時的動畫

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="400"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="0"
    android:toYDelta="100%p">
    >
</translate>

在valuses創建style.xml

<resources>

    //加入顯示和隱藏動畫
    <style name="dialogWindowAnim" mce_bogus="1" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/dialog_in</item>
        <item name="android:windowExitAnimation">@anim/dialog_out</item>
    </style>

    //消除邊距和黑邊框
    <style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:background">@null</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

代碼

//創建dialog時加入消除邊距和黑邊框的style
        Dialog dialog = new Dialog(this, R.style.ActionSheetDialogStyle);
        //自定義佈局
        View view = View.inflate(this, R.layout.dialog_caogao, null);
        dialog.setContentView(view);

        //獲取當前Activity所在的窗體
        Window dialogWindow = dialog.getWindow();
        //設置Dialog從窗體底部彈出
        dialogWindow.setGravity(Gravity.BOTTOM);
        dialogWindow.getDecorView().setPadding(0, 0, 0, 0);

        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        //設置寬
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        //設置高
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;

        dialogWindow.setAttributes(lp);
        //顯示對話框
        dialogWindow.setGravity(Gravity.BOTTOM);
        //設置dialog的動畫效果
        dialogWindow.setWindowAnimations(R.style.dialogWindowAnim);
        dialog.show();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章