1. ホーム
  2. android

アンドロイドでダイアログを画面下から中央にスライドさせる方法

2023-09-26 12:07:08

質問

アニメーションでアクティビティにダイアログを表示したい。ダイアログはアクティビティの下部から中央部へスライドします。

/****Edit****/

質問が曖昧で申し訳ございません。ダイアログを下から上にスライドさせるのですが、ダイアログの下側がアクティビティーの下側に来るようにしたいのですが、次の図のような感じでしょうか?

どのように解決するには?

このためには、2つのアニメーションが必要で、これを res/anim フォルダに置きます。

  1. スライドアップダイアログ.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="50%p" android:toYDelta="0%p"
    android:duration="@android:integer/config_longAnimTime"/>

2.スライドアウト_ダウン.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="0%p"
    android:toYDelta="100%p" />

ここで、style.xmlにカスタムスタイルを作成する必要があります。

<style name="DialogAnimation">
        <item name="android:windowEnterAnimation">@anim/slide_up_dialog</item>
        <item name="android:windowExitAnimation">@anim/slide_out_down</item>
</style>

次に、android Theme.Dialogを同じstyle.xmlで拡張します。Dialog のテーマを同じ style.xml で拡張し、作成したカスタム スタイルを参照できるようにします。

<!-- Animation for dialog box -->
    <style name="DialogSlideAnim" parent="@android:style/Theme.Dialog">
        <item name="android:windowAnimationStyle">@style/DialogAnimation</item>
    </style>

そして最後に、このスタイルをダイアログを作成する際に以下のように呼び出します。

dialog = new Dialog(new ContextThemeWrapper(this, R.style.DialogSlideAnim));

はい...これでダイアログがスライドできるようになりました......!

更新しました。

MichealP が提案したように、これはウィンドウを下部に配置します。

getWindow().setGravity(Gravity.BOTTOM); 

を編集し、タイトルと背景を削除するようにスタイルを変更します。

<item name="android:windowBackground">@null</item> 
<item name="android:windowFrame">@null</item> 
<item name="android:windowNoTitle">true</item>

sikni8 が提案したように、これは黒枠を透明にするものです。

getWindow().setBackgroundDrawableResource(android.R.color.transparent);