给底部的对话框添加移动动画效果

可通过Window.setWindowAnimations(int resId)设置

SharingDialog.java

  1. package com.bu_ish.sharing_dialog_example;
  2.  
  3. import android.app.Dialog;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.os.Bundle;
  7. import android.view.Gravity;
  8. import android.view.View;
  9. import android.view.WindowManager;
  10. import android.widget.Toast;
  11.  
  12. public class SharingDialog extends Dialog {
  13. public SharingDialog(Context context) {
  14. super(context, R.style.SharingDialog);
  15. setCanceledOnTouchOutside(false);
  16. setOnCancelListener(new OnCancelListener() {
  17. @Override
  18. public void onCancel(DialogInterface dialog) {
  19. Toast.makeText(getContext(), "已取消", Toast.LENGTH_SHORT).show();
  20. }
  21. });
  22. getWindow().setWindowAnimations(R.style.SharingDialogAnimation);
  23. }
  24.  
  25. @Override
  26. public void show() {
  27. super.show();
  28. WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
  29. layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
  30. layoutParams.gravity = Gravity.BOTTOM;
  31. getWindow().setAttributes(layoutParams);
  32. }
  33.  
  34. @Override
  35. protected void onCreate(Bundle savedInstanceState) {
  36. super.onCreate(savedInstanceState);
  37. setContentView(R.layout.dialog_sharing);
  38. findViewById(R.id.cancelTextView).setOnClickListener(new View.OnClickListener() {
  39. @Override
  40. public void onClick(View v) {
  41. cancel();
  42. }
  43. });
  44. }
  45. }

动画style

  1. <style name="SharingDialogAnimation" parent="android:Animation">
  2. <item name="android:windowEnterAnimation">@anim/sharing_dialog_show_animation</item>
  3. <item name="android:windowExitAnimation">@anim/sharing_dialog_dismiss_animation</item>
  4. </style>

对话框显示动画

sharing_dialog_show_animation.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate
  4. android:duration="500"
  5. android:fromYDelta="100%p"
  6. android:toYDelta="0" />
  7. </set>

对话框关闭动画

sharing_dialog_dismiss_animation.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate
  4. android:duration="500"
  5. android:fromYDelta="0"
  6. android:toYDelta="100%p" />
  7. </set>

P.S.

translate用于设置移动动画效果

完整Demo链接:https://pan.baidu.com/s/1hnFYo8i3SId8e3Ag0jKM3w,提取码:wgcr

Android笔记之为自定义对话框添加移动动画效果的更多相关文章

  1. Android动画效果之自定义ViewGroup添加布局动画

    前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢?今天结合自定义ViewGroup来学习一下布局动画.本文将通 ...

  2. 微课制作软件Camtasia,来为视频添加预设动画效果

    之前已介绍过使用微课制作软件Camtasia为视频添加"缩放和平移"动画的教程以及"效果按钮"的使用. 此篇内容,我们就来介绍使用录像编辑软件--Camtasi ...

  3. android继承Dialog实现自定义对话框

    有时需要自定义对话框,可以使用AlterDialog.Bulider,比如下面的代码片段 new AlertDialog.Builder(self) .setTitle("标题") ...

  4. 自定义ViewGroup添加布局动画

    声明几个属性值: <declare-styleable name="GridImageViewGroup"> <attr name="childVert ...

  5. Android开发UI之给ListView设置布局动画效果

    1.通过JAVA代码添加,资源文件基本上不修改 XML文件,只添加了一个ListView,就不贴XML文件的代码了. java代码: public class MainActivity extends ...

  6. AndroidUI 布局动画-为列表添加布局动画效果

    新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...

  7. Android应用系列:仿MIUI的Toast动画效果实现(有图有源码)

    前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持 ...

  8. Android应用系列:仿MIUI的Toast动画效果实现

    前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持 ...

  9. 为Zepto添加Slide动画效果

    一.缘由 公司的移动端项目,采用zepto为主要框架,但是zepto毕竟是精简版的jquery,体积小了,功能自然没有这么强大,特别是动画和选择器这两块,需要我们自己去拓展. 在项目开发过程中,很多页 ...

随机推荐

  1. linux下网络监控神器"iptraf-ng"

    优点:监控的网络信息很全面,安装和使用方便   #centos安装: #yum 源使用centos自带的base源即可. yum install -y iptraf-ng   #运行 iptraf-n ...

  2. Servlet 2.4 规范之第三篇:Servlet生命周期

        SRV.2.3    Servlet生命周期 servlet有着定义良好且明确的生命周期,它定义了servlet以怎样的方式加载和实例化.初始化.怎样处理客户端请求.以及怎样停止服务.生命周期 ...

  3. java 正则表达式-忽略大小写与多行匹配

    Pattern.compile("'.*?'", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

  4. FreeSql 教程引导

    FreeSql是一个功能强大的NETStandard库,用于对象关系映射程序(O/RM),以便于开发人员能够使用 .NETStandard 对象来处理数据库,不必经常编写大部分数据访问代码. 特性 支 ...

  5. Tarjan缩点+DAG图dp

    题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...

  6. [转] 32位 PL/SQL Develope r如何连接64位的Oracle 图解

    原文地址:LINK 由于硬件技术的不断更新,Win7系统逐渐成为主流,而且计算机内存逐渐增大,为了充 分的利用内存资源(因为32为系统最多只能用到3G左右的内存),提高系统性能,很多人开始使用Win7 ...

  7. PhantomJS 基础及示例 (转)

    概述 PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support f ...

  8. java 发送微信客服消息

    package com.baosight.wechat.service; import net.sf.json.JSONObject; import org.apache.commons.httpcl ...

  9. php.ini的载入位置

    php.ini文件找不到,载入WINDOS下的,但找不到,后来强制-c查找是OK的.思考,为什么载入window下的ini文件.1.可能是有一个默认路径.2.可能没有路径.默认载入. 问题解决:htt ...

  10. JS中Float类型加减乘除 修复 JQ 操作 radio、checkbox 、select LINQ to SQL:Where、Select/Distinct LINQ to SQL Count/Sum/Min/Max/Avg Join

    JS中Float类型加减乘除 修复   MXS&Vincene  ─╄OvЁ  &0000027─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄Ov ...