自定义控件

Andorid中为Dialog添加动画

2020-09-01  本文已影响0人  岁月神偷_4676

Android中的动画想必大家都用过,但是给Dialog显示动画,可能很多人没这个需求,因此也没仔细研究过,下面就以如何给Dialog添加一个右进右出的动画为例给大家展示一二。其实很简单,核心代码就一句:

window.setWindowAnimations(R.style.right_in_right_out_anim);

那么这句代码在什么位置添加呢?其实是在Dialog的onCreate中添加,具体如下:

Public class MyDialog extends Dialog {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    Window window = this.getWindow();
        if (window != null) {
          //set animation
            window.setWindowAnimations(R.style.right_in_right_out_anim);
        }
    }
  }

下面再来看一下右进右出动画的实现:
在style.xml中添加一项

<style name="right_in_right_out_anim" parent="android:Animation">
        <!--//进入时的动画-->
        <item name="android:windowEnterAnimation">@anim/right_in_anim</item>
        <!--//退出时的动画-->
        <item name="android:windowExitAnimation">@anim/right_out_anim</item>
    </style>

在res/anim文件夹中添加两个动画文件

right_in_anim.xml Dialog显示动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:duration="300"
        android:fromXDelta="100%"
        android:toXDelta="0" />
</set>

right_out_anim.xml Dialog消失动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:duration="300"
        android:fromXDelta="0"
        android:toXDelta="100%" />
</set>

到此为Dialog添加右进右出的动画效果就完成了。

上一篇下一篇

猜你喜欢

热点阅读