36

如何在android中显示闪烁文本。

谢谢你们。

4

7 回答 7

29

实际上,在 ICS 中有一个复活节彩蛋闪烁标签!:) 我实际上并不推荐使用它——不过,在源代码中找到它真的很有趣!

<blink xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="I'm blinking"
        />
</blink>
于 2012-02-03T17:47:57.077 回答
11

为它创建一个视图动画。您可以在 0 秒内从 100% 到 0% 进行 alpha 渐变,然后在一个循环中再次返回。这样一来,Android 就可以智能地处理它,您不必乱用线程和浪费 CPU。

更多关于动画的信息:http:
//developer.android.com/reference/android/view/animation/package-summary.html

教程: http:
//developerlife.com/tutorials/ ?p=343

于 2010-08-10T16:27:38.160 回答
8

在代码中使用线程总是会浪费 CPU 时间并降低应用程序的性能。你不应该一直使用线程。必要时使用。

为此目的使用 XML 动画:

动画眨眼

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="600"
        android:repeatMode="reverse"
        android:repeatCount="infinite"/>
</set>

闪烁活动:像这样使用它:-

public class BlinkActivity extends Activity implements AnimationListener {

    TextView txtMessage;
    Button btnStart;

    // Animation
    Animation animBlink;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_blink);

        txtMessage = (TextView) findViewById(R.id.txtMessage);
        btnStart = (Button) findViewById(R.id.btnStart);

        // load the animation
        animBlink = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.blink);

        // set animation listener
        animBlink.setAnimationListener(this);

        // button click event
        btnStart.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                txtMessage.setVisibility(View.VISIBLE);

                // start the animation
                txtMessage.startAnimation(animBlink);
            }
        });

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        // Take any action after completing the animation

        // check for blink animation
        if (animation == animBlink) {
        }

    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }

    @Override
    public void onAnimationStart(Animation animation) {

    }

}

如果您有任何疑问,请告诉我。

于 2013-09-26T07:08:33.693 回答
5

可以通过添加交替两个 TextView 的 ViewFlipper 来完成,并且可以在切换时应用 Fadein 和 Fadeout 动画。

布局文件:

<ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="wrap_content" android:flipInterval="1000" >

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="TEXT THAT WILL BLINK"/>

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="" />

</ViewFlipper>

活动代码:

private ViewFlipper mFlipper;
mFlipper = ((ViewFlipper)findViewById(R.id.flipper));
mFlipper.startFlipping();
mFlipper.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in));
mFlipper.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_out));
于 2012-02-08T18:45:04.617 回答
0
If you want to make text blink on canvas in bitmap image so you can use this code
we have to create two methods 
So first, let's declare a blink duration and a holder for our last update time: 
private static final  int BLINK_DURATION = 350; // 350 ms
private long lastUpdateTime = 0; private long blinkStart=0;

现在创建方法

    public void render(Canvas canvas) {
    Paint paint = new Paint();
    paint.setTextSize(40);
    paint.setColor(Color.RED);
    canvas.drawBitmap(back, width / 2 - back.getWidth() / 2, height / 2
            - back.getHeight() / 2, null);
    if (blink)
        canvas.drawText(blinkText, width / 2, height / 2, paint);
}

现在创建更新方法来闪烁

public void update() {
if (System.currentTimeMillis() - lastUpdateTime >= BLINK_DURATION
        && !blink) {
    blink = true;
    blinkStart = System.currentTimeMillis();
}
if (System.currentTimeMillis() - blinkStart >= 150 && blink) {
    blink = false;
    lastUpdateTime = System.currentTimeMillis();
 }

}

现在它工作正常

于 2014-11-01T06:57:39.150 回答
0
 public static void blinkText(TextView textView) {
    Animation animation = new AlphaAnimation(1, 0);         // Change alpha from fully visible to invisible
    animation.setDuration(300);                             // duration - half a second
    animation.setInterpolator(new LinearInterpolator());    // do not alter animation rate
    animation.setRepeatCount(-1);                            // Repeat animation infinitely
    animation.setRepeatMode(Animation.REVERSE);             // Reverse animation at the end so the button will fade back in
    textView.startAnimation(animation);
}

我不记得我在哪里找到的,但这是迄今为止我见过的最好的

于 2021-09-17T22:51:22.630 回答
-1
    private bool _blink; 
    private string _initialtext;
    private async void Blink()
    {
        _initialtext = _txtView.Text;
        _txtView.Text = Resources.GetString(Resource.String.Speak_now);
        while (VoiceRecognizerActive)
        {
            await Task.Delay(200);
            _blink = !_blink;
            Activity.RunOnUiThread(() =>
            {
                if (_blink) 
                    _txtView.Visibility = ViewStates.Invisible; 
                else 
                    _txtView.Visibility = ViewStates.Visible; 
            }); 
        }
        _txtView.Text = _initialtext;
        _txtView.Visibility = ViewStates.Visible;
    }

//这是Xamarin android

于 2018-10-31T15:57:35.067 回答