Android中从左到右的文本动画,如闪光一样

6
我不知道这种动画叫什么,但我想像下面那样实现它。我在iOS中看到了这个动画。
如您所见,句子"slide to cancel"会从左向右移动,并有一种后面有灯光的感觉。
我不知道该使用什么。我尝试过Alpha等动画,但无法实现。有人能帮帮我吗?

请尝试此链接: http://android-er.blogspot.in/2012/01/create-frame-animation-with.html - Virag Brahme
@ViragBrahme,这不是我正在寻找的... :( - Chintan Rathod
没意识到这是为Android设计的,所以我设置了一个CSS动画...我不做任何Android开发,但我想这对你来说不起作用...无论如何,这是演示链接:http://cdpn.io/BpgyE - brbcoding
@brbcoding,嗯...CSS可以在我们的WebView中使用。非常感谢您的努力.. :) - Chintan Rathod
5个回答

6

6

@ChintanRathod:谢谢...愉快的编码:D - Aerrow
1
伟大的简单直接 - Desolator

4

通过使用Spannable得到了解决方案。

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

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

欢迎提供更好的答案.. :)


这个很棒!但是如何增加这个效果的速度啊,伙计! - Kanagalingam

1
我觉得你在谈论闪烁效果。Facebook为此制作了一个库。它可以帮助你展示从左到右的发光效果,还有更多选项。
你可以在这里查看完整的文档。 Shimmer Library

0

你有两种方式:

1)使用OpenGL并使用着色器来实现此效果。

2)创建一个图层,其中包含[透明][白色][透明]渐变,并对其进行动画处理。


嗯...正在尝试中,稍后再抓住你。 - Chintan Rathod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接