安卓自定义对话框(弹出框)并添加显示动画
发布日期:2021-06-29 18:30:00
浏览次数:3
分类:技术文章
本文共 1937 字,大约阅读时间需要 6 分钟。
效果图
关键代码
- 自定义对话框
class MyDialog(context: Context) : Dialog(context) { init { setContentView(R.layout.dialog_layout) setCanceledOnTouchOutside(false) setAnimationsBottomUp() } private fun setAnimationsBottomUp() { window?.setWindowAnimations(R.style.dialogAnimBottomUp) }}
- 在styles.xml中添加如下内容:
- 在res下创建anim目录,并创建如下两个文件:
- dialog_exit_anim.xml
- dialog_enter_anim.xml
完整源代码
附录
还有一种实现对话框动画显示的方式,就是通过控制整个视图来进行动画显示.
简要代码:
class BottomDialogWithAnim1(context: Context) : Dialog(context, R.style.common_dialog) { init { setContentView(R.layout.dialog_bottom_anim1) changeDialogStyle() showWithMoveAnim(rootLayout) } /** * 动画方式显示,从底部向上显示出来。 * 如果其他想要其他方式,则修改里面的animation实现即可。 */ private fun showWithMoveAnim(srcView: View) { val animateTime = 300L val animation = TranslateAnimation(0f, 0f, getWindowHeight(context) - srcView.height.toFloat(), 0f) animation.fillAfter = true animation.duration = animateTime srcView.startAnimation(animation) } private fun getWindowHeight(context: Context): Int { val point = Point() val manager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager val display = manager.defaultDisplay if (Build.VERSION.SDK_INT > 16) { display.getRealSize(point) } else { display.getSize(point) } return Point(point).y } /** * 设置dialog居下占满屏幕 */ private fun changeDialogStyle() { window?.let { val params = it.attributes if (params != null) { params.height = ViewGroup.LayoutParams.WRAP_CONTENT params.width = ViewGroup.LayoutParams.MATCH_PARENT params.gravity = Gravity.BOTTOM it.attributes = params } } }}
完整源代码
转载地址:https://cxyxy.blog.csdn.net/article/details/107672198 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月20日 13时39分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C# 矩阵取值
2021-07-03
台积电/联发科/富士康/高通/三星/中芯国际/ASML/华为、光刻机、芯片/
2021-07-03
C# Activator.CreateInstance
2021-07-03
DMZ
2021-07-03
c# EPPlus.dll
2021-07-03
sqlserver格式化-年月日
2021-07-03
C# WebApi 跨域
2021-07-03
sqlserver dateadd&datediff
2021-07-03
sqlserver 制表符、换行符、回车符
2021-07-03
C#继承类与父类序列化测试
2021-07-03
企业的核心高管团队:CEO、COO、CSO、CTO、CFO、CHO
2021-07-03
c# ?.Trim()
2021-07-03
c# 反射循环给实体赋值
2021-07-03
WCF (413) Request Entity Too Large.
2021-07-03
接口鉴权--JWT
2019-04-30
asp.net core 类库获取appsettings.json的值
2019-04-30
asp.net core ef Scaffold-DbContext
2019-04-30
从零开始实现ASP.NET Core MVC的插件式开发
2019-04-30
DDD学习一
2019-04-30
asp.net core学习一
2019-04-30