android– 文本颜色动画

android– 文本颜色动画,第1张

概述有没有办法动画文本颜色变化(从任何颜色变为白色)?我想出的唯一变体是将两个文本视图(具有相同的文本)放在一个地方,然后淡化顶部的一个,因此底部的一个(具有白色)将变得可见.附:我废弃了2个TextViews的变体,因为它看起来很奇怪(边缘不平滑,因为我在屏幕上有很多这样的元素,它真的

有没有办法动画文本颜色变化(从任何颜色变为白色)?

我想出的唯一变体是将两个文本视图(具有相同的文本)放在一个地方,然后淡化顶部的一个,因此底部的一个(具有白色)将变得可见.

附:我废弃了2个TextVIEws的变体,因为它看起来很奇怪(边缘不平滑,因为我在屏幕上有很多这样的元素,它真的落后于滚动).我做了什么,是一个疯狂的黑客,使用Thread和setTextcolor(也强制重绘textvIEw)来动画.

由于我只需要2种颜色变化(从红色到白色,从绿色到白色),我硬编码了它们之间的值和所有过渡颜色.所以这是它的样子:

public class BlinkingTextVIEw extends TextVIEw {public BlinkingTextVIEw(Context context, AttributeSet attrs) {    super(context, attrs);}public voID animateBlink(final boolean red) {    if (animator != null) {        animator.drop();    }    animator = new Animator(this, red);    animator.start();}public voID clearBlinkAnimation() {    if (animator != null) {        animator.drop();    }}private Animator animator;private final static class Animator extends Thread {    public Animator(final TextVIEw textVIEw, final boolean red) {        this.textVIEw = textVIEw;        if (red) {            SET_TO_USE = RED;        } else {            SET_TO_USE = GREEN;        }    }    private TextVIEw textVIEw;    private final int[] SET_TO_USE;    private final static int[] RED = {        -2142396,        -2008754,        -1874854,        -1740697,        -1540490,        -1405563,        -1205099,        -1004634,        -804170,        -669243,        -469036,        -334879,        -200979,        -67337,        -1    };    private final static int[] GREEN = {        -6959821,        -6565826,        -6106293,        -5646758,        -5055894,        -4530309,        -3939444,        -3283042,        -2692177,        -2166592,        -1575728,        -1116193,        -656660,        -262665,        -1    };    private boolean stop;    @OverrIDe    public voID run() {        int i = 0;        while (i < 15) {            if (stop) break;            final int color = SET_TO_USE[i];            if (stop) break;            textVIEw.post(new Runnable() {                @OverrIDe                public voID run() {                    if (!stop) {                        textVIEw.setTextcolor(color);                                           }                }            });            if (stop) break;            i++;            if (stop) break;            try {                Thread.sleep(66);            } catch (InterruptedException e) {}            if (stop) break;        }    }    public voID drop() {        stop = true;    }}}

解决方法:

虽然我没有找到一个完全不同的方法,但我尝试使用TextSwitcher(使用淡入淡出动画)来创建颜色变化效果. TextSwitcher是一种VIEwSwitcher,它可以在两个(内部)TextVIEw之间进行动画制作.您是否在不知不觉中手动实施了相同的系统? ;)它为您管理更多的过程,因此您可能会发现它更容易使用(特别是如果您想尝试更多涉及的动画).我会创建TextSwitcher的新子类和一些方法,例如setColour()可以设置新颜色然后触发动画.然后可以将动画代码移动到主应用程序之外.

>确保在放入切换台的两个TextVIEw上保留一个句柄
>更改其他TextVIEw的颜色并调用setText()以在它们之间设置动画

如果您已经在使用VIEwSwitcher,那么我认为没有更简单的方法来实现它.

总结

以上是内存溢出为你收集整理的android – 文本颜色动画全部内容,希望文章能够帮你解决android – 文本颜色动画所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1100523.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存