zoukankan      html  css  js  c++  java
  • Android动画之淡入淡出

    为了更好的说明Android动画的淡入淡出效果,这里以一个场景为例: 界面上有两个View 控件,两个View交替显示,当一个View淡入显示,另一个View淡出不可见。

    我们把当前要显示的View叫showView, 要隐藏不可见的view叫hideView。

     final View showView = findViewById(***)
     final View hideView = findViewById(***)

    首先说淡入显示,既然要显示,那么View要设置为可见,要实现淡入的效果,就需要将透明度先设置为0

    showView.setAlpha(0f);
    showView.setVisibility(View.VISIBLE);

    接下来就要调用showView.animate()方法来实现动画效果,设置最终的透明度为1。就可以达到不可见->模糊->完全显示

       showView.animate()
                  .alpha(1f)
                  .setDuration(5000)
                  .setListener(null);

    setDuration是设置动画的持续时间,这里设置的是5秒。 setListener这里先缓一缓,最后我会说明这个方法的作用。

    这样showView的淡入效果就实现了,但是同时也必须在同一时间来完成hideView的淡出隐藏,否则两个view就重叠了。

    知道如何实现淡入,也就知道如何实现淡出了 - 将透明度由1变到0,最后将hideView设为不可见(在onAnimationEnd事件中设置), 调用hideView.animate()来实现动画效果。就可以达到显示->模糊->完全不可见

     hideView.animate()
                  .alpha(0f)
                  .setDuration(mShortAnimationDuration)
                  .setListener(new AnimatorListenerAdapter() {
                      @Override
                      public void onAnimationEnd(Animator animation) {
                          hideView.setVisibility(View.GONE);
                      }
                  });


    好,目前为止,淡入淡出的效果已经实现,但是相信有细心的童鞋会发现如下细节

    1 对于showView, 是先调用showView.setVisibility(View.VISIBLE)设置为可见, 然后才调用showView.animate()

      对于hideView, 是先调用 hideView.animate(),最后在onAnimationEnd事件中调用hideView.setVisibility(View.GONE);设置为不可见
    2 showView为什么要调用setListener(null), 这跟我文章开头提到的场景有关,因为我们要实现的是两个View交替淡入淡出显示,所以当前的showView就是上一次的hideView,而hideView是设置了listener了,并且实现的是设置view为不可见,所以必须清掉。

  • 相关阅读:
    pytorch实现rnn并且对mnist进行分类
    python中的list按照某一列进行排序的方法
    pytorch实现style transfer
    Pytorch基本变量类型FloatTensor与Variable
    Linux上统计文件夹下文件个数以及目录个数
    python调用caffe实现预测
    python调用caffe环境配置
    JS实现唤起手机APP应用,如果本地没有则跳转到下载地址
    PHP开发中使用的工具
    Linux安装redis服务
  • 原文地址:https://www.cnblogs.com/lcyhjx/p/3473836.html
Copyright © 2011-2022 走看看