当前位置:首页 > 谈天说地 > 正文内容

Android用动画显示或隐藏视图

34资源网2022年01月17日 13:23304
目录
  • 一、需求背景
  • 二、创建淡入淡出动画
    • 1.创建布局文件
    • 2.设置淡入淡出动画
    • 3.代码实现
  • 总结

    一、需求背景

    有时候,我们需要在屏幕上显示新的信息,同时移除旧的信息,一般情况下我们通过visibility或者gone来对需要显示或者隐藏的视图进行设置,这样做的坏处是显示或者隐藏的动作变化非常突兀,而且有时候变化很快导致用户无法注意到这些变化。这时就可以使用动画显示或者隐藏视图,通常情况下使用圆形揭露动画,淡入淡出动画或者卡片反转动画。

    二、创建淡入淡出动画

    淡入淡出动画会逐渐淡出一个view或者viewgroup,同时淡入另一个。此动画适合在应用中切换内容或者视图的情况。这里使用viewpropertyanimator来创建这种动画。

    下面的动画是从进度指示器切换到某些内容文字的淡入淡出示例。

    1.创建布局文件

    <androidx.constraintlayout.widget.constraintlayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    
          <!--淡入淡出动画-->
          <button
                  android:id="@+id/btn_use_fade_in_fade_out_animator"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_marginhorizontal="10dp"
                  android:onclick="doclick"
                  android:text="@string/use_fade_in_fade_out_animator"
                  app:layout_constraintleft_toleftof="parent"
                  app:layout_constraintright_torightof="parent"
                  app:layout_constrainttop_totopof="parent" />
    
          <androidx.constraintlayout.widget.constraintlayout
                  android:layout_width="0dp"
                  android:layout_height="0dp"
                  app:layout_constraintdimensionratio="w,1:1"
                  app:layout_constraintleft_toleftof="parent"
                  app:layout_constraintright_torightof="parent"
                  app:layout_constrainttop_tobottomof="@id/btn_use_fade_in_fade_out_animator">
    
              <textview
                      android:id="@+id/tv_content"
                      android:layout_width="0dp"
                      android:layout_height="0dp"
                      android:padding="16dp"
                      android:text="@string/test_use_fade_in_fade_out_animator_text"
                      android:visibility="gone"
                      app:layout_constraintbottom_tobottomof="parent"
                      app:layout_constraintleft_toleftof="parent"
                      app:layout_constraintright_torightof="parent"
                      app:layout_constrainttop_totopof="parent" />
    
              <!--进度条-->
              <progressbar
                      android:id="@+id/loading_progress"
                      style="?android:progressbarstylelarge"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      app:layout_constraintbottom_tobottomof="parent"
                      app:layout_constraintleft_toleftof="parent"
                      app:layout_constraintright_torightof="parent"
                      app:layout_constrainttop_totopof="parent" />
    
          </androidx.constraintlayout.widget.constraintlayout>
    
    
      </androidx.constraintlayout.widget.constraintlayout>
    

    2.设置淡入淡出动画

    对于需要淡入的动画,首先将其可见性设置为gone,这一点在布局文件中已经设置。在需要显示淡入的view的时候,首先将其alpha设置为0,这样可以保证view已经显示但是不可见。分别设置淡入的动画和淡出的动画,淡入的动画将其所在的view的alpha属性从0变化到1,淡出的动画将其所在的view的alpha属性从1变化到0对于淡出动画,在动画执行完成后,将其的可见性设置为gone,从而加快处理速度。

    3.代码实现

    //开始执行淡入淡出动画
        private fun crossfade() {
            //设置需要淡入的view的alpha为0,可见性为visible
            mbinding.tvcontent.apply {
                alpha = 0f
                visibility = view.visible
                //通过动画将透明度变为1.0
                animate()
                    .alpha(1.0f)
                    .setduration(mshortanimationduration.tolong())
                    .start()
            }
    
            //设置需要淡出的动画,将其alpha从1变为0,并通过监听动画执行事件,在动画结束后将view的可见性设置为gone
            mbinding.loadingprogress.animate()
                .alpha(0f)
                .setduration(mshortanimationduration.tolong())
                .setlistener(object : animatorlisteneradapter() {
                    override fun onanimationend(animation: animator?) {
                        super.onanimationend(animation)
                        mbinding.loadingprogress.visibility = view.gone
                    }
                })
                .start()
        }
    

    总结

    到此这篇关于android用动画显示或隐藏视图的文章就介绍到这了,更多相关android动画内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

    看完文章,还可以用支付宝扫描下面的二维码领取一个支付宝红包,目前可领1-88元不等

    支付宝红包二维码

    除了扫码可以领取之外,大家还可以(复制 720087999 打开✔支付宝✔去搜索, h`o`n.g.包哪里来,动动手指就能领)。

    看下图所示是好多参与这次活动领取红包的朋友:

    支付宝红包

    扫描二维码推送至手机访问。

    版权声明:本文由34楼发布,如需转载请注明出处。

    本文链接:https://www.34l.com/post/5687.html

    分享给朋友:

    相关文章

    李开复经典语录大全
    李开复经典语录大全

    开复,你是想一辈子写一堆像废纸一样的学术论文呢?还是想用产品改变世界?”这是当时苹果公司的副总裁戴夫?耐格尔举着一杯透亮的自酿葡萄酒向他发出加入邀请。正是这句话点燃了李开复心中多年“世界因你不同”的梦想。他放弃了对终身教授职位的追求,做出了...

    ​京东钢镚怎么使用?教你用京东钢镚的支付的方法教程
    ​京东钢镚怎么使用?教你用京东钢镚的支付的方法教程

    京东钢镚怎么使用?很多朋友看到自己的京东钱包里面有京东钢镚,不知道京东钢镚怎么使用,在使用京东钢镚之前,一定要要先了解清楚京东钢镚使用条件有哪些,下面开淘小编来介绍一下京东钢镚怎么使用?如何用你的京东钢镚支付购买商品的方法教程分享。京东钢镚...

    打不死的小强励志语句,关于小强的7个句子分享
    打不死的小强励志语句,关于小强的7个句子分享

    1、野火烧不尽,春风吹又生用打不死的小强来形容,真的是再合适不过了2、命中注定无法改变,总觉得自己是打不死的小强,这下终于生病了,最对不起的就是自己了3、好好干吧!要成为一名打不死的小强。无论别人怎样,你都要成为那个开心,优秀的自己,好吗?...

    短视频文案素材哪里找(上热门的短视频素材)
    短视频文案素材哪里找(上热门的短视频素材)

    抖音怎么写文案?整理了100条抖音抖音爆款文案,直接套用就能火不看后悔系列!!!抖音上爆火的文案。情感、励志、共鸣、实用、反转、提问等6大类型不管你是拍摄什么类型视频 ,都可以直接套用。不多说直接上干货!!!一定要看到最后!!!01—励志类...

    lenovo手机网上哪里买(联想旗舰店官网商城)
    lenovo手机网上哪里买(联想旗舰店官网商城)

    昨晚联想拯救者电竞手机 2 Pro 正式发布,搭载骁龙 888 旗舰芯片、八指操控体系,配备 6.92 英寸 AMOLED 144Hz 三星定制电竞无孔屏幕,5500mAh 容量电池,堪称 “堆料狂魔”,这款手机于今日 10:00 正式开售...

    微信开放外链,社交想象力有限
    微信开放外链,社交想象力有限

    编者按:本文来自新熵,创业邦经授权发布,封面图来自摄图网。 作者|古廿 编辑|伊页 网易云音乐上市,丁磊在现场讲了很多的未来,比如元宇宙。但未来是摸不着看不见的,所以愿意放眼未来的人,多半还要立足脚下。 脚下的立足往往来自两个方面...