Dialog 的动画
拿到Dialog的实例,dialog.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation;
完成动画的设置。
style
<style name="PauseDialogAnimation">
<item name="android:windowEnterAnimation">@anim/grow_in</item> <item name="android:windowExitAnimation">@anim/grow_out</item></style>
缩放+透明度
@anim/grow_in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:duration="@android:integer/config_shortAnimTime" android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="0%"
android:toXScale="0.3"
android:toYScale="0.3" />
<alpha android:duration="@android:integer/config_shortAnimTime" android:fromAlpha="1.0" android:interpolator="@android:anim/decelerate_interpolator" android:toAlpha="0.0" />
</set>
@anim/grow_out
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:duration="@android:integer/config_shortAnimTime" android:fromXScale="0.3" android:fromYScale="0.3" android:pivotX="50%" android:pivotY="100%" android:toXScale="1.0" android:toYScale="1.0" /> <alpha android:duration="@android:integer/config_shortAnimTime" android:fromAlpha="0.0" android:interpolator="@android:anim/decelerate_interpolator" android:toAlpha="1.0" /></set>
从上到下
IN
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromYDelta="-100%p" android:fromXDelta="0" android:duration="500"></translate>
OUT
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:toYDelta="100%p" android:toXDelta="0" android:duration="500"></translate>
从左到右
in
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="-100%p" android:fromYDelta="0" android:duration="500"></translate>
out
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:toXDelta="100%p" android:toYDelta="0" android:duration="500"></translate>
Dialog 的显示位置。
显示位置有Window window = dialog.getWindow();window.setGravity(Gravity.BOTTOM|Gravity.LEFT);
下左,,和Framelayout是一样的定位方式。
dialog有两个回调函数,setOnShowListener
和setOnDismissListener
,可以通过这两个函数还显示和消失的时候,对dialog中的view,进行动画。更富有动感。
网友评论