博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓自定义对话框(弹出框)并添加显示动画
阅读量:1894 次
发布时间:2019-04-26

本文共 1937 字,大约阅读时间需要 6 分钟。

效果图

关键代码

  1. 自定义对话框
class MyDialog(context: Context) : Dialog(context) {
init {
setContentView(R.layout.dialog_layout) setCanceledOnTouchOutside(false) setAnimationsBottomUp() } private fun setAnimationsBottomUp() {
window?.setWindowAnimations(R.style.dialogAnimBottomUp) }}
  1. 在styles.xml中添加如下内容:
  1. 在res下创建anim目录,并创建如下两个文件:
  1. dialog_exit_anim.xml
  1. 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 } } }}

完整源代码

转载地址:http://dzodf.baihongyu.com/

你可能感兴趣的文章
面试-项目
查看>>
Mysql主从复制的配置(双机互为主从)
查看>>
java io输入输出流详解
查看>>
log4j在java中实现
查看>>
android studio 优先源码编译解决隐藏文件报红问题
查看>>
Android studio 两种方式将项目生成为jar包
查看>>
系统签名方式二 将as生成的jks 注入系统签名 变成带有系统签名的jks
查看>>
AMS 的启动过程 面试 笔记
查看>>
AMS 重要数据结构 面试 笔记
查看>>
Activity栈管理 面试 笔记
查看>>
window、windowManager 和 WMS 的关系面试 笔记
查看>>
Window 的属性面试 笔记
查看>>
Window 的标志
查看>>
运行时数据区域 面试 笔记
查看>>
垃圾标记算法 面试 笔记
查看>>
垃圾收集算法 面试 笔记
查看>>
Android 应该是很全面的单例模式介绍,共七种
查看>>
【解惑】剖析float型的内存存储和精度丢失问题
查看>>
android SHA1获取(代码获取)
查看>>
android 7.0调用相机 崩溃
查看>>