6

どのようなアニメーションを呼んでいるのかわかりませんが、以下のように実装したいと思います。そのアニメーションをiOSで見ました。

ここに画像の説明を入力

ご覧のとおり、キャンセルする文章スライドは、背後にライトがあるように左から右にアニメーション化されます。

何を使えばいいのかわからない。アルファのようなアニメーションをいくつか試しましたが、それを達成できません。誰でも私を助けることができますか?

4

5 に答える 5

6

これは私のデモです、試してみてください

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を使用して解決策を得た

以下は、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();

出力

ここに画像の説明を入力

それでもより良い答えはもっと高く評価されます.. :)

于 2013-08-14T14:44:26.440 に答える
0

2 つの方法があります。

1) openGL を使用し、シェーダーを使用してこの効果を作成します。

2)[透明] [白] [透明]グラデーションを含むテキストの上にレイヤーを作成し、アニメーション化します。

于 2013-08-14T11:19:10.720 に答える