我使用下面发布的代码进行闪烁动画,但是此代码仍然有问题,如果用户在按钮上单击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();
}
请问其他任何解决方案吗?
答案 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中启动动画,就可以更改持续时间以使动画变慢或变快