首页 > 解决方案 > 显示/隐藏带有幻灯片动画的 DialogFragment [Android]

问题描述

我发现太多关于同一主题的帖子,但对我没有任何帮助,我认为问题已经过时,DialogFragment 显示得太快,真的很伤我的眼睛,我想在显示/关闭 dialogfragment 时添加幻灯片动画。

我有这个全屏对话框的自定义主题:

<style name="dialogSlideStyle">
    <item name="android:windowEnterAnimation">@anim/slide_left</item>
    <item name="android:windowExitAnimation">@anim/slide_right</item>
</style>

<style name="AppTheme.FullScreenDialog" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <item name="android:windowAnimationStyle">@style/dialogSlideStyle</item>
    <!-- Primary brand color. -->
    <item name="colorPrimary">#231F20</item>
    <item name="colorPrimaryVariant">#231F20</item>
    <item name="colorOnPrimary">@color/white</item>
    <!-- Secondary brand color. -->
    <item name="colorSecondary">#231F20</item>
    <item name="colorSecondaryVariant">#231F20</item>
    <item name="colorOnSecondary">@color/black</item>
    <item name="android:colorEdgeEffect">@color/edgeColor</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor" tools:targetApi="l">@color/white</item>
    <item name="android:windowLightStatusBar" tools:targetApi="l">true</item>
    <!-- Customize your theme here. -->
</style>

我正在设置这样的风格:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setStyle(STYLE_NORMAL, R.style.AppTheme_FullScreenDialog)

}

在这种风格之后,它可以真正全屏工作,但是这种风格没有应用“WindowAnimations”,它没有做幻灯片。

我也试过:

 override fun getTheme(): Int {
    return R.style.AppTheme_FullScreenDialog
}

不工作。

也试过:

 override fun getTheme(): Int {
    return R.style.dialogSlideStyle
}

还是行不通。

我的动画文件如下所示:slide_left.xml

<set>
    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromYDelta="0"
        android:fromXDelta="-100%p"
        android:duration="500"
        />
</set>

slide_right.xml

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

标签: androidandroid-dialogfragmentandroid-transitions

解决方案


推荐阅读