【问题标题】:android apply color to alpha animationandroid将颜色应用于alpha动画
【发布时间】:2010-07-14 14:45:45
【问题描述】:

有没有办法将颜色应用于 android 中的 alpha 动画?我知道如何使用 <alpha> 元素,但我想让 alpha 应用颜色以及 alpha,以便我可以突出显示布局。这可能吗?

【问题讨论】:

    标签: android animation colors alpha


    【解决方案1】:

    动画不能包含 Android 中的颜色变化--仅包含 alpha、旋转、缩放和平移。

    也就是说,您仍然可以通过将两个不同颜色的对象相互叠加并淡入或淡出顶部的对象来更改颜色。

    您还可以查看TransitionDrawableTextSwitcher 来完成类似的操作。希望我们能够在未来的更新中获得对彩色动画的全面支持。

    【讨论】:

      【解决方案2】:

      嗯,这是我为屏幕的特定区域设置动画的解决方案(请参阅下面的演示)。请注意,此代码针对运行 >= API9 的设备。

      初学者友好,只需复制和粘贴。

      FadeAnimationColored.java

      public class FadeAnimationColored {
      
      private View view;
      private float maxBrightness = 1.0f;
      private float minBrightness = 0.0f;
      private long duration = 400L;
      private long startOffset = 0L;
      private int color = android.R.color.white;
      
      // Constructors...
      
      public FadeAnimationColored(View view, String color, float maxBrightness, float minBrightness, long duration, long startOffset) {
          this.view = view;
          this.color = Color.parseColor(color);
          this.maxBrightness = maxBrightness;
          this.minBrightness = minBrightness;
          this.duration = duration;
          this.startOffset = startOffset;
          prepareView();
      }
      
      
      public void fadeOut() {
          this.view.setAlpha(1f);
          Animation anim = new AlphaAnimation(minBrightness, maxBrightness);
          anim.setDuration(duration);
          anim.setStartOffset(startOffset);
          anim.setFillEnabled(true);
          anim.setFillAfter(true);
          view.startAnimation(anim);
      }
      
      
      public void fadeIn() {
          Animation anim = new AlphaAnimation(maxBrightness, minBrightness);
          anim.setDuration(duration);
          anim.setStartOffset(startOffset);
          anim.setFillEnabled(true);
          anim.setFillAfter(true);
          view.startAnimation(anim);
      }
      
      
      private void prepareView() {
          this.view.setBackgroundColor(this.color);
          this.view.setAlpha(0f);
      }
      }
      

      接下来为您的布局添加一个额外的视图,将其视为叠加层(我使用了一个简单的FrameLayout,它设置为match_parent

      这是一个 sn-p,它显示了如何在 Activity 或 Fragment 中设置动画:

      FrameLayout interceptorFrame = (FrameLayout) mView.findViewById(R.id.fl_interceptor);
      
      final FadeAnimationColored fadeAnimationLayout =
              new FadeAnimationColored(interceptorFrame, MaterialColor.GREY_800, 0.9f, 0.0f, 400L, 0);
      
      mFabMenu.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() {
          @Override
          public void onMenuToggle(boolean opened) {
              if (opened) {
                  fadeAnimationLayout.fadeOut();
              } else {
                  fadeAnimationLayout.fadeIn();
              }
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2015-03-03
        • 2014-01-04
        • 1970-01-01
        • 2013-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-01
        • 1970-01-01
        相关资源
        最近更新 更多