当前位置:首页 > 谈天说地

Android用动画显示或隐藏视图

34资源网2022-01-17705
目录
  • 一、需求背景
  • 二、创建淡入淡出动画
    • 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动画内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

    版权声明:34楼发布

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

    分享给朋友:

    相关文章

    好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元

    好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元

    好想你花开富贵大礼包多少钱一提?好想你,花开富贵礼盒1236g零食大礼包,原价58.90元,领取15元的优惠券减掉之后只需要43.90元,这个价格在近30日内属于最低价,喜欢这款商品的朋友不要错过哦。…

    30句用喜从天降造句的语句

    30句用喜从天降造句的语句

    1、让他去泰山旅游,那真是喜从天降。…

    最傻的六种员工离职理由,希望你不是其中一员

    最傻的六种员工离职理由,希望你不是其中一员

    春节后,今年的中国员工离职率应该是最低的。但是职场上,还是会有很多员工提离职。离职原因各种各样, 不开心,不舒服,工资少,学不到东西等等。那么,最傻的六种员工离职是哪些呢?…

    疫情还是很严峻,最近去超市都要检测了

    疫情还是很严峻,最近去超市都要检测了

    疫情还是很严峻,最近去超市也要各种检测了,记得前不久我去超市还是比较宽松的,基本上没有专门的检测员,口罩也不用戴。最近可能是外省一些地区疫情比较严重了,所以温州这边现在检测也更加严格了,我最近去超市买东西都要各种检测,买个菜呀,买些零食吃的…

    裁员,爱奇艺穿越生死线

    裁员,爱奇艺穿越生死线

    图源:摄图网 编者按:本文来自微信公众号霞光社(ID:Globalinsights)),作者:麻吉、郭照川、韩夏,创业邦经授权转载 霞光社从多位爱奇艺员工处了解到,本轮裁员罕见覆盖了爱奇艺所有部门,从影业、IP、游戏、电商部门,甚至到经纪公…

    董明珠还需要几个网红?

    董明珠还需要几个网红?

    编者按:本文来自科技新知,创业邦经授权发布。 作者丨李哩哩 编辑丨月见 一个网红,就是一个渠道。八个网红,就是八个渠道。 董明珠应该进一步向罗永浩看齐。 12月1日,交个朋友直播间发布了名为“交个朋友宇宙”的文章,文章介绍罗永浩“交…