アンドロイドでダイアログを画面下から中央にスライドさせる方法
2023-09-26 12:07:08
質問
アニメーションでアクティビティにダイアログを表示したい。ダイアログはアクティビティの下部から中央部へスライドします。
/****Edit****/
質問が曖昧で申し訳ございません。ダイアログを下から上にスライドさせるのですが、ダイアログの下側がアクティビティーの下側に来るようにしたいのですが、次の図のような感じでしょうか?
どのように解決するには?
このためには、2つのアニメーションが必要で、これを res/anim フォルダに置きます。
- スライドアップダイアログ.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);
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] TextViewのリンクをクリック可能にする方法
-
[解決済み] 画面下部のビューを揃えるには?
-
[解決済み] アンドロイドでカスタムダイアログボックスを作成する方法は?
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] フラグメント間の値の受け渡し方法
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。