どのようなアニメーションを呼んでいるのかわかりませんが、以下のように実装したいと思います。そのアニメーションをiOSで見ました。
ご覧のとおり、キャンセルする文章スライドは、背後にライトがあるように左から右にアニメーション化されます。
何を使えばいいのかわからない。アルファのようなアニメーションをいくつか試しましたが、それを達成できません。誰でも私を助けることができますか?
これは別の IOS のようなスライド テキスト効果です。
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();
出力
それでもより良い答えはもっと高く評価されます.. :)
2 つの方法があります。
1) openGL を使用し、シェーダーを使用してこの効果を作成します。
2)[透明] [白] [透明]グラデーションを含むテキストの上にレイヤーを作成し、アニメーション化します。