动画对话框实现

炫酷的动画对话框

关键技术

AlertDialog的自定义

代码
 //创建对话框实例dlg = new AlertDialog.Builder(this).create();dlg.show();                             //显示对话框Window window = dlg.getWindow();        //获取对话框窗口window.setGravity(Gravity.CENTER);     //此处设置dialog显示在中心位置window.setWindowAnimations(R.style.mystyle);      //添加动画window.setContentView(R.layout.dialog_layout);   //设置对话框布局文件//获取对话框确定按钮button_determine = (Button) window.findViewById(R.id.btn_determine);//获取对话框取消按钮button_cancel = (Button) window.findViewById(R.id.btn_cancel);

代码含义已注释

动画 mystyle
 <style name="mystyle" parent="android:Animation"><!--进入时的动画--><item name="@android:windowEnterAnimation">@anim/dialog_enter</item><!--退出时的动画--><item name="@android:windowExitAnimation">@anim/dialog_exit</item></style>

可以看出我们使用了两个动画 dialog_enter dialog_exit

dialog_enter (进入动画)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><!--从上进入到中间--><translateandroid:duration="200"android:fromYDelta="-100%"></translate></set>
dialog_exit (退出动画)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><!--从中间到底部退出--><translateandroid:fromYDelta="0"android:toYDelta="100%"android:duration="200"/>
</set>
对话框布局文件 dialog_layout (这个根据自己喜好来)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:orientation="vertical"><!--标题--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingTop="20dp"android:text="提示"android:textColor="@color/black"android:textSize="16sp" /><!--提示文字--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingBottom="50dp"android:paddingLeft="20dp"android:paddingRight="20dp"android:paddingTop="20dp"android:text="您确定退出?"android:textColor="@color/blue"android:textSize="20sp" /><!--线--><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@color/yellow" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><!--确定按钮--><Buttonandroid:id="@+id/btn_determine"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@null"android:text="确定"android:textColor="@color/orange"android:textSize="20sp" /><!--线--><Viewandroid:layout_width="1dp"android:layout_height="match_parent"android:background="@color/yellow" /><!--取消按钮--><Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@null"android:text="取消"android:textColor="@color/orange"android:textSize="20sp" /></LinearLayout></LinearLayout>

最后就剩下简单的 主布局文件了,这个布局没有什么就是改了一下背景颜色

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#4a5fec">
</RelativeLayout>
到此 关键代码就已经完了

完整Java代码

public class MainActivity extends Activity {private Button button_determine, button_cancel;      //定义对话框按钮private AlertDialog dlg;                               //定义对话框@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}/*** 判断当单击手机返回按钮时,从手机顶部向下移动对话* 再次单击返回按钮,对话框将从中间向底部移动消失对话框*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {//判断如果单击了返回按钮if (keyCode == KeyEvent.KEYCODE_BACK) {//创建对话框实例dlg = new AlertDialog.Builder(this).create();dlg.show();                             //显示对话框Window window = dlg.getWindow();        //获取对话框窗口window.setGravity(Gravity.CENTER);     //此处设置dialog显示在中心位置window.setWindowAnimations(R.style.mystyle);      //添加动画window.setContentView(R.layout.dialog_layout);   //设置对话框布局文件//获取对话框确定按钮button_determine = (Button) window.findViewById(R.id.btn_determine);//获取对话框取消按钮button_cancel = (Button) window.findViewById(R.id.btn_cancel);initEvent();                                       //调用初始化事件方法}return super.onKeyDown(keyCode, event);}/*** 该方法出事对话框中按钮的事件,单击确定按钮退出该应用* 单击取消按钮,对话框将移动至底部消失*/private void initEvent() {button_determine.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dlg.dismiss();          //对话框移动到底部消失finish();               //关闭当前应用}});button_cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dlg.dismiss();          //对话框移动到底部消失}});}
}

运行
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22665.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt智能提效职场办公-ppt怎么蒙层

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 在 PowerPoint 中添加蒙版图层&#xff0c;可以在幻灯片中创建一个半透明的矩形或形状&#xff0c;并在其上方添加或放置其他对象。 下…

作文批改网如何粘贴英语作文

批改网的英语作文不允许被粘贴的话&#xff0c;下面提供四种办法使用复制粘贴功能&#xff1a;   1。移除监听事件即可开启 在浏览器中打开&#xff0c;鼠标右键选择检查&#xff0c;或者按快捷键F12打开调试窗口 点击Console 输入以下代码&#xff1a; $(#contents).…

ChatGPT实战100例 - (01) 秒出思维导图

文章目录 ChatGPT实战100例 - (01) 秒出思维导图一、需求与思路1. 需求&#xff1a;快速的头脑风暴2. 思路&#xff1a;生成markdown然后转化嗯 二、生成markdown语法的思维导图1. 问题2. 回答 三、把markdown文本转换成思维导图1. 转换2. 下载 ChatGPT实战100例 - (01) 秒出思…

ChatGPT解答:PYQT5 的mwindow源码文件里面写了很多的函数方法,随着时间的推移越来越多,代码行数太多,影响了性能,如何解决

ChatGPT解答&#xff1a; PYQT5 的mwindow源码文件里面写了很多的函数方法&#xff0c;随着时间的推移越来越多&#xff0c;代码行数太多&#xff0c;影响了性能&#xff0c;如何解决 以下为可复制的内容与实例&#xff1a; PYQT5 的mwindow源码文件里面写了很多的函数方法&a…

如何正确定位自己,并婉拒多的offer

前言 如果你采用了前文介绍的方法&#xff0c;也拿到了多家公司的offer。那么选择困难的时候&#xff0c;就需要你正确定位自己&#xff0c;做出决策。这时&#xff0c;你也要想明白你到底是要什么。我推荐给你的方法是...... 1. 正确定位自己 在自己评估自己的时候&#xff0c…

程序员找工作竟遭25家公司的婉拒!网友:真心佩服他的勇气~

每个人的追求不一样&#xff0c;也许是因为我本身是一个没有野心的人&#xff0c;所以比较容易知足&#xff0c;不太愿意花那么多的时间和精力去追逐功名利禄&#xff0c;但是最近看到下面这个程序员网友的经历使我燃气了熊熊的欲望之火 可见&#xff0c;这名程序员的坚持并没有…

10岁女程序员,婉拒谷歌 Offer ,凭实力影响着所有年轻人!

点击上方“开源社”关注我们 | 转载自&#xff1a;核桃编程教育 | 编辑&#xff1a;王皓月 | 责编&#xff1a;Corrie 开源社引言 这是一个全民编程的时代&#xff0c;这是一个不分岁月创造奇迹的时代。继82岁程序员若宫正子独立开发 iPhone 手游、90后美女张怡从小白到AI算法工…

罗永浩重返科技圈,却故人难寻

阅读本文大概需要 2.6 分钟。 宣布年后就会回归科技界的时候&#xff0c;罗永浩自己可能都没想到&#xff0c;这个回归之路比预想的要漫长一些。 在进军 AR/VR 之前&#xff0c;他得重回讲台&#xff0c;卖直播培训课。虽然只是撑场面&#xff0c;每期只讲一个半小时&#xff0…

现代C++的文艺复兴

广播分享下2022全球C及系统软件技术大会盛会&#xff0c;不知道的可以提前关注下。 鉴于上海疫情发展&#xff0c;全球C及系统软件技术大会预计推迟至2022年5月20-21日举办。 2022全球C及系统软件技术大会 | 官方网站 本文是全球 C 及系统软件技术大会联合主席李建忠老师为C…

我们公司没销售 - 疫情下企业软件的互联网营销

瘟疫似乎没完没了了&#xff0c;两年前写的文章&#xff0c;现在看起来竟然还有意义&#xff0c;再翻出来改改。 说到没销售&#xff0c;其实有很多商业形态都没有销售人员&#xff0c;运转得都挺好&#xff0c;这没什么可大惊小怪的。 不过&#xff0c;我们是个做企业软件的公…

42岁码农今年找工作记录

作者&#xff1a;胡说 | 编辑&#xff1a;对白的算法屋 https://zhuanlan.zhihu.com/p/461526410 给自己记录一下。32岁的时候还在硅谷大厂做架构师&#xff0c;35岁的时候回国在阿里P8&#xff0c;然后自己任性的去挑战各种奇葩的方向。现在一个大型外企里面做着一些不疼不痒的…

代码随想录算法公开课!

关注代码随想录的录友&#xff0c;基本都是跟着代码随想录一起刷题的。 目前代码随想录的内容是完全开放在代码随想录网站&#xff0c;Github&#xff0c;和Gitee上&#xff0c;同时也出版了《代码随想录》纸质版。 这套刷题顺序和题解帮助了非常多的录友。 而现在我打算将《…

广州搬砖第三年,从一枚小菜鸡到架构师

theme: cyanosis 前言 在广州搬砖三年&#xff0c;我觉得蛮有意思的&#xff0c;真真正正有所成长的&#xff0c;也让我从一名小菜鸡成长为一名架构师&#xff0c;当然中间也遇到很多艰辛&#xff0c;当我回过头去看的时候&#xff0c;这些都是我成长的垫脚石&#xff0c;雕刻…

35岁程序员面试时被嫌弃年纪大,被婉拒了,太扎心了

老张是一名java程序员&#xff0c;35岁&#xff0c;有丰富的开发经验。 最近老张到一家互联网创业公司面试&#xff0c;去面试前&#xff0c;张工在电话里就先和HR表明自己的期望薪资范围&#xff0c;免得最后技术面通过了&#xff0c;而薪资方面达不到要求&#xff0c;浪费彼此…

计算机研究生考426分单科多少,考研初试426分,第一名的成绩,只因为是跨考,却被老师婉拒?...

某个考生&#xff0c;考研初试426分&#xff0c;第一名的成绩&#xff0c;只因为是跨考&#xff0c;却被老师婉拒&#xff1f; 跨专业考研到底又有多难&#xff1f; 最近&#xff0c;有个江苏南京的家长&#xff0c;拿着这张图片来问我&#xff0c;是不是说跨专业考研的学生&am…

一个 SAP 开发工程师的 2022 年终总结:四十不惑

儿时对于一年四季&#xff0c;我最中意的便是冬季&#xff0c;因为冬季意味着即将到来的寒假&#xff0c;可以回到老家&#xff0c;和多日不见的玩伴们痛痛快快玩上一段时间。冬季也总是和春节联系在一起&#xff0c;过年就意味着可以从长辈那拿到一笔压岁钱&#xff0c;把自己…

程序员加班回家,被快递小哥误当小偷

&#xff08;给程序员的那些事加星标&#xff09; 综合自&#xff1a;浙视频、微博 【导读】&#xff1a;最近有个和程序员相关的视频火了&#xff0c;一快递小哥&#xff08;小董&#xff09;在深夜投快递时遇上一位加班到深夜回家的程序员&#xff0c;由于快递小哥不了解程序…

非对口专业测试人,婉拒猎头、放弃6份高薪offer,你敢信?

从非对口的国贸专业&#xff0c;步入测试之路&#xff1b;从红色旅游小城湘潭&#xff0c;迈入国际化都市上海。“明确方向-及时实践-谨慎选择-踏实扎根-计划未来”。她的每一步&#xff0c;都走得格外坚定有力......话不多说&#xff0c;让我们一起来看看这位小姐姐的成长故事…

【offer来了】成功上岸美团、字节、华为(婉拒)

这是一份教你如何更高效地准备面试的小册&#xff0c;涵盖常见八股文&#xff08;系统设计、常见框架、分布式、高并发 ......&#xff09;、优质面经等内容。 今天来分享一位码友的 2022 春招面经&#xff0c;拿到了美团、字节、华为等公司的 offer。面经中涵盖的问题&#xf…

offer来了:成功上岸美团、字节、华为(婉拒)

这是一份教你如何更高效地准备面试的小册&#xff0c;涵盖常见八股文&#xff08;系统设计、常见框架、分布式、高并发 ......&#xff09;、优质面经等内容。 今天来分享一位码友的 2022 春招面经&#xff0c;拿到了美团、字节、华为等公司的 offer。面经中涵盖的问题&#xf…