Andriod中为Dialog设置动画

简介: Andriod中为Dialog设置动画

因为Dialog不属于View,所以不能使用View.startAnimation()。

看了Dialog的源码发现,Dialog其实是Window实现的。所以我们可以使用Window设置动画的方式来实现。

我们这里使用AlertDailog,实现从顶部弹入,隐藏时回到顶部消失。


首先定义2个动画xml

anim_in

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500">
    <translate
        android:fromYDelta="-50%p"
        android:toYDelta="0" />
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>

anim_out

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500">
    <translate
        android:fromYDelta="0"
        android:toYDelta="-50%p" />
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>

增加一个样式,引用2个动画

windowEnterAnimation是显示时的动画

windowExitAnimation是隐藏时的动画

    <style name="CustomDialog">
        <item name="android:windowEnterAnimation">@anim/anim_in</item>
        <item name="android:windowExitAnimation">@anim/anim_out</item>
    </style>

为AlertDialog添加动画

        //创建builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this)
                .setMessage("message").setTitle("标题")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
        //创建AlertDialog
        AlertDialog alertDialog = builder.create();
        //获取Diloag所在的Window
        Window window = alertDialog.getWindow();
        //为Window设置动画
        window.setWindowAnimations(R.style.CustomDialog);
        //显示Dialog
        alertDialog.show();

相关文章
|
2月前
|
iOS开发
iOS超出父控件范围无法点击问题
iOS超出父控件范围无法点击问题
140 58
|
iOS开发
iOS 启动图设置及icon图标设置
OS 启动图设置及icon图标设置
832 0
iOS 启动图设置及icon图标设置
|
缓存 iOS开发
iOS LaunchScreen.storyboard 启动页设置图片不显示
iOS LaunchScreen.storyboard 启动页设置图片不显示
289 0
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
71 0
|
Android开发
android 自定义登陆对话框基类封装,且随着软键盘的弹起自动移动位置
android 自定义登陆对话框基类封装,且随着软键盘的弹起自动移动位置
|
Java Android开发
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
264 0
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
|
iOS开发
iOS开发 - 滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)
iOS开发 - 滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)
220 0
iOS开发 - 滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)
|
XML Android开发 数据格式
Android控件显示、隐藏时,增加动画效果
Android控件显示、隐藏时,增加动画效果
498 0
Android控件显示、隐藏时,增加动画效果