文字动画从左到右,就像Android中的闪耀一样

时间:2013-08-14 11:06:04

标签: android animation

我不知道它调用了什么类型的动画,但我想实现它,如下所示。我在iOS中看到了这个动画。

enter image description here

正如您所看到的,句子滑动取消将从左到右动画,就像背后有一盏灯一样。

我不知道该用什么。我尝试了一些类似Alpha的动画,但无法实现。任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:6)

这是我的演示,请试一试

https://github.com/FrankNT/TextViewSlideEffect

此致 弗兰克

Text Animation from left to right like shine in Android

答案 1 :(得分:5)

这是另一个像幻灯片文字效果的IOS,

https://github.com/RomainPiel/Shimmer-android

答案 2 :(得分:4)

使用 Spannable

获得解决方案

以下是Thread类,它以100 ms的间隔连续运行。

class MyThread extends Thread {
    //used for stopping thread
    boolean flag; 

    //init flag to true so that method run continuously
    public MyThread() {
        flag = true;
    }

    //set flag false, if want to stop this thread
    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    @Override
    public void run() {
        super.run();
        while (flag) {
            try {
                Thread.sleep(intervalMiliSeconds);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        Spannable spn = new SpannableString(txtView
                                .getText().toString());
                        spn.setSpan(new ForegroundColorSpan(Color.WHITE),
                                startPosition, endPosition,
                                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                        txtView.setText(spn);

                        startPosition++;
                        endPosition++;
                        endPosition %= (lengthOfString + charGaps);
                        startPosition %= lengthOfString;

                        if (startPosition == 0) {
                            endPosition = charGaps;
                            startPosition = 0;
                        }

                        if (endPosition > lengthOfString) {
                            endPosition = lengthOfString;
                        }

                        Log.d("Home", "Start : " + startPosition + " End : " + endPosition);

                    }
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

要使用上述代码,请使用以下实现。

TextView txtView = (TextView) findViewById(R.id.txtView);

int charGaps = 3;

int startPosition = 0;
int endPosition = charGaps;

int lengthOfString = txtView.getText().length();

MyThread thread = new MyThread();

thread.start();

<强>输出

enter image description here

更好的答案将更加赞赏.. :)

答案 3 :(得分:1)

我认为你在谈论微光效应。 Facebook为此制作了图书馆。 它将帮助您从左到右显示更多选项的发光效果。

您可以在那里看到完整的文档。 Shimmer Library

答案 4 :(得分:0)

您有两种方式:

1)使用openGL并使用Shaders来实现此效果。

2)在文本上方创建一个图层,其中包含[透明] [白色] [透明]渐变并为其设置动画。