当前位置: 首页 > news >正文

复兴区建设局网站网站宜昌

复兴区建设局网站,网站宜昌,环艺做网站,网站建建设最近需求一个问题,想要在dialog消失时增加动画,之前如上一个文章中遇到的,但是最后改了实现方式,要求在特定的地方缩放,原来的dialog高度是wrap_content的,这样是无法实现的,因此首先需要将dial…

最近需求一个问题,想要在dialog消失时增加动画,之前如上一个文章中遇到的,但是最后改了实现方式,要求在特定的地方缩放,原来的dialog高度是wrap_content的,这样是无法实现的,因此首先需要将dialog的layout文件从wrap_content,改成match_parent,同时设置最外层布局背景透明。在dialog.show()之后,重新设置窗口属性

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:clipChildren="false"android:layoutDirection="ltr">此处省略内部内容</RelativeLayout>
        dialog?.show()dialog?.apply {window?.setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.MATCH_PARENT)}

紧接着我们就可以使用动画了,尤其是平移动画,原来dialog是wrap_content的时候,如何平移超过view,就会消失。当dialog变成match_parent后,就可以正常使用平移动画了。

思路:根据位置计算平移的距离进行平移,同时缩放

    private fun setAnim(dialog: Dialog) {dialog.apply {val animView = findViewById<View>(R.id.limited_layout)val height = animView?.height//此处是在计算相应的距离等内容val retainHeight = (screenHeight(context) - height!!) / 2 - DensityUtil.dp2px(ApplicationHelper.getInstance().context,84f) - getStatusBarHeight(context)val topHeight = DensityUtil.dp2px(ApplicationHelper.getInstance().context,80f)val transHeight = retainHeight - topHeight - DensityUtil.dp2px(ApplicationHelper.getInstance().context,28f).toFloat()val scaleAnimation = if (retainHeight < topHeight) {ScaleAnimation(1f, 0f,1f, 0f,Animation.RELATIVE_TO_SELF, 1f,Animation.RELATIVE_TO_SELF,((topHeight + DensityUtil.dp2px(ApplicationHelper.getInstance().context,28f) - retainHeight) / height.toFloat()))} else {ScaleAnimation(1f, 0f,1f, 0f,Animation.RELATIVE_TO_SELF, 1f,Animation.RELATIVE_TO_SELF, 0f)}val translationAnimator = if (retainHeight > topHeight) {TranslateAnimation(0f,0f,0f,-transHeight)} else {null}translationAnimator?.let {val animationSet = AnimationSet(true)scaleAnimation.duration = 300animationSet.addAnimation(scaleAnimation)val alphaAnimation = AlphaAnimation(1f, 0f)alphaAnimation.duration = 300it.duration = 300animationSet.addAnimation(it)animationSet.addAnimation(alphaAnimation)animView.startAnimation(animationSet)animationSet.setAnimationListener(object : Animation.AnimationListener {override fun onAnimationStart(animation: Animation?) {// 动画开始时的操作}override fun onAnimationEnd(animation: Animation?) {mLimitedDialog?.let { dismiss() }}override fun onAnimationRepeat(animation: Animation?) {// 动画重复时的操作}})} ?: run {val animationSet = AnimationSet(true)scaleAnimation.duration = 300animationSet.addAnimation(scaleAnimation)val alphaAnimation = AlphaAnimation(1f, 0f)alphaAnimation.duration = 300animationSet.addAnimation(alphaAnimation)animView.startAnimation(animationSet)animationSet.setAnimationListener(object : Animation.AnimationListener {override fun onAnimationStart(animation: Animation?) {// 动画开始时的操作}override fun onAnimationEnd(animation: Animation?) {mLimitedDialog?.let { dismiss() }}override fun onAnimationRepeat(animation: Animation?) {}})}}}

http://www.sczhlp.com/news/150590/

相关文章:

  • 佛山营销型网站设计wordpress 商品展示插件
  • 阅读网站建设规划书云闪付小程序开发平台
  • 东莞寮步二手车交易市场潍坊seo建站
  • 赶集门户网站建设方案企业网站建设课件
  • 天津港口海鲜之旅全攻略(2025最新版)
  • tomcat创建bat启动,结合任务计划实现自动重启tomcat服务 - 详解
  • 实用指南:【论文精读】Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector
  • 开网站做家政室内设计网络课程
  • 互联网公司网站建设河南省建设厅网站103
  • 什么人做网站怎么看一家网站是谁做的
  • 电子商务网站的建设和流程自助建站免费搭建个人网站
  • 中国万维网官网域名注册网站讨债女企业家中标公司被强执
  • 做网站内容字体多少pt网站建设怎么做帐
  • 南昌vr网站开发网站建设合同缴印花税
  • 网站模板带后台 下载杭州高端网站建设排名
  • Chromium V8类型混淆漏洞CVE-2025-10585安全分析
  • Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生
  • 黄岩网站开发如何制作自己的作品集网站
  • 高大上的自助建站网站互动平台是什么意思
  • 深圳外贸网站建设服务收费做公司官网步骤
  • 娱乐网站 建站软件旅游投资公司网站建设
  • 谷歌提交网站好的网站建设平台
  • 南阳市做网站g3云推广是什么
  • 肇东市建设局网站深圳建筑工程交易网
  • 网站备案能查到什么东西猎聘网招聘官方网站
  • 上海做网站的公司联系方式平凉市城乡建设局网站
  • 上虞网站开发东莞推广网站排名
  • 个人网站开发与实现开题报告网站排名优化专业定制
  • jquery 网站缩放网站进入沙盒的表现
  • 潍坊模板开发建站宁波网站推广规划