6

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

在此处输入图像描述

如您所见,要取消的句子幻灯片将从左到右动画,就像它后面有光一样。

我不知道该用什么。我尝试了一些像 Alpha 这样的动画,但无法实现。谁能帮我?

4

5 回答 5

6

这是我的demo,请试试

https://github.com/FrankNT/TextViewSlideEffect

问候, 弗兰克

从左到右的文本动画就像 Android 中的光芒一样

于 2013-11-02T06:17:46.733 回答
6

这是另一个IOS类似幻灯片文字效果,

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

于 2014-07-09T13:24:49.137 回答
4

通过使用Spannable得到解决方案

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

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();

输出

在此处输入图像描述

更好的答案将不胜感激.. :)

于 2013-08-14T14:44:26.440 回答
1

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

你可以在那里看到完整的文档。 微光图书馆

于 2015-12-17T06:27:12.437 回答
0

你有两种方法:

1)使用openGL并使用Shaders来制作这个效果。

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

于 2013-08-14T11:19:10.720 回答