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添加右进右出的动画效果就完成了。