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

Android用动画显示或隐藏视图

34资源网2022-01-17460
目录
  • 一、需求背景
  • 二、创建淡入淡出动画
    • 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

    分享给朋友:

    相关文章

    视频号入口在哪里(视频号直播入口新手手册)

    视频号入口在哪里(视频号直播入口新手手册)

    视频号助手在哪里?视频号助手什么时候上线?微信视频号助手正式上线目前微信视频号助手已经开始内测使用了,大家可以直接在PC端扫码登录,管理自己的视频号,可以看到自己的各项动态数据,非常方便管理。 视频号助手在哪里 视频号助手在哪里? 手机微…

    华为小米革了康佳长虹们的命,海信怎么办?

    华为小米革了康佳长虹们的命,海信怎么办?

    编者按:本文来自陆玖财经,创业邦经授权发布。 电视行业真正需要面对的不是“大屏好还是小屏好”,用激光、OLED还是Mini LED之类的技术路线之争,而是一旦被视为“智能终端”,从产品形态到竞争模式的翻天覆地。 近日,海信子品牌Vidda…

    乐视大厦5.7亿拍卖被公开质疑:竞拍人就是拍卖人!滴滴出行旗下APP恢复上架传闻不实;阿里或成全国首个灵活办公企业丨邦早报

    乐视大厦5.7亿拍卖被公开质疑:竞拍人就是拍卖人!滴滴出行旗下APP恢复上架传闻不实;阿里或成全国首个灵活办公企业丨邦早报

    【滴滴宣布将在纽交所退市 启动香港上市准备】12月3日上午9点,滴滴出行官方微博发布公告称,经认真研究,公司即日起启动在纽交所退市的工作,并启动在香港上市的准备工作。 【恒大2.6亿美元担保无法履约】12月3日晚间,中国恒大发布一则内幕消…

    微信直接打开淘宝抖音,但李佳琦罗永浩带货,买不了

    微信直接打开淘宝抖音,但李佳琦罗永浩带货,买不了

    图源:摄图网 编者按:本文来自微信公众号IT时报(ID:vittimes),作者:江丽雯,编辑:郝俊慧 挨踢妹,排版:季嘉颖,创业邦经授权转载 11月29日,微信放开了对外链的限制。 当日发布的《关于〈微信外部链接内容管理规范〉的更新声明》…

    视频号灰度测试购物车功能,微信要扛起腾讯电商大旗了?

    视频号灰度测试购物车功能,微信要扛起腾讯电商大旗了?

    图源:摄图网 编者按:本文来自微信公众号小谦笔记(ID:xiaoqianshuo),创业邦经授权转载 据自媒体百准报道,除了直播,微信视频号目前正在灰度测试短视频购物车功能,这被视为微信加码电商业务的一大跨步。 早在2014年,腾讯就在微信…

    瑞幸喘口气,对手已林立

    瑞幸喘口气,对手已林立

    图源:摄图网 编者按:本文来自微信公众号螳螂观察(ID:TanglangFin),作者:易不二,创业邦经授权转载 年轻人从未停止消费小蓝杯。 今年夏天生椰拿铁被全网催货的盛景,与9天就突破270万杯销量的丝绒拿铁,都证明了瑞幸的生命力。 从…