【问题标题】:Animating Label Color Changes In Codename One代号一中的动画标签颜色变化
【发布时间】:2020-02-08 06:22:35
【问题描述】:

我的应用中有一个指示器,它有一个图标(标签),上面覆盖了一个数值。

我想通过改变标签图标的颜色来引起人们对值改变的关注。我可以通过换出使用不同颜色制作的不同图像来做到这一点。

但我想将它恢复到原来的颜色,并且仍然在屏幕上看到颜色变化并变回。我想我也许可以使用动画来做到这一点,但我不知道怎么做。

更新:

应用 Francesco 的建议,如下所示:

replace(labelstd, labelhlt, CommonTransitions.createFade(500));
replace(labelhlt, labelstd, CommonTransitions.createFade(500));

我发现它不会褪色到突出显示颜色,然后再褪色,如我所愿。它褪色为高光颜色,然后立即翻转回来。我认为这是因为淡入淡出实际上是同时发生的。

我需要使用线程来处理这个问题,还是有其他方法可以做到这一点?

【问题讨论】:

  • Label.setIcon(...) 还不够吗?你想要类似淡入淡出效果的东西吗?在这种情况下,您可以使用Container.replace(Component current, Component next, Transition t) 来切换两个标签。作为过渡,您可以使用CommonTransitions.createFade(int duration) 或该类提供的任何其他过渡。
  • 是的,setIcon 的问题在于它会进行永久性更改,我希望更改它然后将其更改回来,就像发光效果一样。我刚刚玩了一下替换功能和淡入淡出过渡 - 看起来这正是我正在寻找的 - 谢谢!

标签: codenameone


【解决方案1】:

感谢@Francesco 的建议。以下是我创建“脉冲”类型图形效果的方法:

   public void fade()
   {
      replace(imageLabel, fadeImage, CommonTransitions.createFade(300), () -> reverseFade(), 0);
   }

   private void reverseFade()
   {
      replace(fadeImage, imageLabel, CommonTransitions.createFade(250));
   }

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2014-01-19
    • 1970-01-01
    • 2015-08-11
    相关资源
    最近更新 更多