如何在旧的Android设备上应用Blink动画或效果?

时间:2015-07-23 14:43:59

标签: java android multithreading android-animation

我使用下面发布的代码进行闪烁动画,但是此代码仍然有问题,如果用户在按钮上单击2次,则闪烁变得更快。以及停止线程无效。

boolean myThreadAlive = false;
private void blink(final View txt){

    if(myBestThread != null){
        if(!myThreadAlive) {
            myThreadAlive = false;
            if (myBestThread.isAlive()) {

                myBestThread.interrupt();
                try {
                    myBestThread.join();
                } catch (InterruptedException e) {
                }
            }
        }
    }

    myBestThread = new Thread(new Runnable() {
        @Override
        public void run() {
            final int timeToBlink = 1000;    //in milissegunds
            myThreadAlive= true;
            while(myThreadAlive) {
                try {Thread.sleep(timeToBlink);}catch(Exception e){}
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        if (txt.getVisibility() == View.VISIBLE) {
                            txt.setVisibility(View.INVISIBLE);
                        } else {
                            txt.setVisibility(View.VISIBLE);
                        }
                    }
                });
            }
            handler.post(new Runnable() {
                @Override
                public void run() {
                    txt.setVisibility(View.VISIBLE);}});
        }
    });
    myBestThread.start();
}

请问其他任何解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以使用动画类来实现此效果,如果没有,只需在res目录中创建一个动画文件夹并创建一个blink.xml文件

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

然后在你的jave中,无论你想要制作动画,只需要调用此

  Animation anim=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.blink);
  textView.startAnimation(anim);

只需在onCLick中调用这些行,或者只要您想在blink.xml中启动动画,就可以更改持续时间以使动画变慢或变快