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

相关文章
|
6月前
|
Java Android开发
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
688 0
|
2月前
|
iOS开发
iOS超出父控件范围无法点击问题
iOS超出父控件范围无法点击问题
136 58
|
5月前
|
Android开发 开发者
Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题
【6月更文挑战第25天】Android UI中的Theme定义了Activity的视觉风格,包括颜色、字体、窗口样式等。要更改主题,首先在`styles.xml`中定义新主题,如`MyAppTheme`,然后在`AndroidManifest.xml`中设置`android:theme`。可应用于全局或特定Activity。运行时切换主题需重置Activity,如通过`setTheme()`和`recreate()`方法。这允许开发者定制界面以匹配品牌或用户偏好。
53 2
|
Android开发
android设置一个通用的控件,比如返回按钮
首先,我们的思路是让我们的写一个基础的Activity,让要使用通用控件的Activity继承它,代码如下:
87 0
|
Java Android开发
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
260 0
关于android studio开发APP中,给单个Activity设置隐藏上面标题栏的简单方案。
|
XML Android开发 数据格式
Android控件显示、隐藏时,增加动画效果
Android控件显示、隐藏时,增加动画效果
496 0
Android控件显示、隐藏时,增加动画效果
|
Android开发
android如何调用显示和隐藏系统默认的输入法
android如何调用显示和隐藏系统默认的输入法
236 0
|
缓存 前端开发 API
Android打造万能自定义阴影控件
目录介绍 01.阴影效果有哪些实现方式 02.实现阴影效果Api 03.设置阴影需要注意哪些 04.常见Shape实现阴影效果 05.自定义阴影效果控件 06.如何使用该阴影控件 07.在recyclerView中使用注意点 01.
1415 0