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

Android用动画显示或隐藏视图

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

    看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

    快手极速版二维码

    快手极速版新人见面礼

    除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

    邀请两个好友奖最高196元,如下图所示:

    快手极速版邀请好友奖励

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

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

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

    分享给朋友:

    相关文章

    分享100句关于励志的经典语录

    分享100句关于励志的经典语录

    1、困难像弹簧,你弱它就强,你强它就弱。…

    koko卡卡拖地机器人家用全自动擦地机推荐

    koko卡卡拖地机器人家用全自动擦地机推荐

    koko卡卡智能拖地机是东莞市宝联电子科技有限公司旗下产品,隶属于香港概念数码科技有限公司,其主要研发机器人吸尘器等高科技领域家居产品,想知道卡卡智能拖地机好用吗,看看下面是网友使用koko卡卡智能拖地机的相关介绍,希望对大家有所帮助。1、…

    失控玩家怎么样?好看吗?值不值得看?

    失控玩家怎么样?好看吗?值不值得看?

    每部电影出来都会有人说好看,有人说不好看。只是有些电影拍出来会更加符合大众口味,有些则只适合小部分人看。那么,最近热播的这部失控玩家怎么样?好看吗?值不值得看?今天小编就和大家说说这部适合大众口味的电影。…

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

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

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