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();

相关文章
|
5月前
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
71 0
|
Java Android开发
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
279 0
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
|
XML Android开发 数据格式
Android控件显示、隐藏时,增加动画效果
Android控件显示、隐藏时,增加动画效果
510 0
|
JavaScript 前端开发 搜索推荐
|
iOS开发
iOS: 自定义 Modal 视图
本文讲的是iOS: 自定义 Modal 视图,Modal 视图越来越多样化,连 Apple 官方人机交互指南都没法三言两语解释清楚。我们又该如何从海量的选择中作出决定呢?
1730 0
|
数据安全/隐私保护 iOS开发
IOS Swift3 UITextField 实现密码的显示与隐藏切换
        最近做项目遇到一个需要做密码的显示与隐藏功能,简单从功能上讲是比较简单的,但是,ios有个恶心的BUG,就是在切换显示密码后再隐藏密码时输入就被清空了,这个非常不友好,为了解决这个问题,我在网上找了相关文章,得到了一些启发,解决了这个问...
1428 0
|
XML Android开发 数据格式
xamarin android自定义标题栏(自定义属性、回调事件)
自定义控件的基本要求 这篇文章就当是自定义控件入门,看了几篇android关于自定义控件的文章,了解了一下,android自定义控件主要有3种方式: 自绘控件:继承View类,所展示的内容在OnDraw方法中绘制出来 组合控件:不需要绘制视图显示的内容,只用系统原生的控件,将几个控件组合起来,(这就是这篇文章要写的自定义标题栏) 继承控件:继承原生的控件类,在原生的属性上增加新的功能。
1519 0