Java 如何在旧的android设备上应用闪烁动画或效果?
我使用下面发布的代码来制作眨眼动画,但这段代码仍然有问题,如果用户单击按钮2次,眨眼速度会更快。以及停止线程是无效的Java 如何在旧的android设备上应用闪烁动画或效果?,java,android,multithreading,android-animation,Java,Android,Multithreading,Android Animation,我使用下面发布的代码来制作眨眼动画,但这段代码仍然有问题,如果用户单击按钮2次,眨眼速度会更快。以及停止线程是无效的 boolean myThreadAlive = false; private void blink(final View txt){ if(myBestThread != null){ if(!myThreadAlive) { myThreadAlive = false; if (myBestThread.
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();
}
是否还有其他解决方案?您可以使用动画类来实现此效果,如果没有,只需在res目录中创建一个anim文件夹,然后创建一个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>
只需在onCLick中调用这些行,或者当您希望动画也在blink.xml中启动时,您可以更改持续时间以使动画变慢或变快您可以使用animation类来实现此效果,如果没有,只需在res目录中创建一个anim文件夹并创建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>
只需在onCLick中调用这些行,或者当您希望动画也在blink.xml中启动时,您可以更改持续时间以使动画变慢或变快您可以使用animation类来实现此效果,如果没有,只需在res目录中创建一个anim文件夹并创建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>
只需在onCLick中调用这些行,或者当您希望动画也在blink.xml中启动时,您可以更改持续时间以使动画变慢或变快您可以使用animation类来实现此效果,如果没有,只需在res目录中创建一个anim文件夹并创建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>
只需在onCLick中调用这些行,或者当您希望动画也在blink.xml中启动时,您可以更改持续时间,使您的动画在Android文档中变慢或变快,此链接支持自Android 4.0及更高版本以来的动画,这就是为什么我使用threadsBuddy我正在使用动画类看看这里它是从API级别1提供的至少尝试一下,你正在使用的最低API级别是多少?总是很乐意帮助,也谢谢你的代码,我从来没有想到Visibility_STATE能以如此激进的方式使用:Android 4.0及更高版本支持的DIn Android文档在此链接动画,这就是为什么我使用threadsBuddy我正在使用动画类看看这里它是从API级别1提供的至少尝试一下,你正在使用的最低API级别是多少?总是很乐意帮助,也谢谢你的代码,我从来没有想到Visibility_STATE能以如此激进的方式使用:Android 4.0及更高版本支持的DIn Android文档在此链接动画,这就是为什么我使用threadsBuddy我正在使用动画类看看这里它是从API级别1提供的至少尝试一下,你正在使用的最低API级别是多少?总是很乐意帮助,也谢谢你的代码,我从来没有想到Visibility_STATE能以如此激进的方式使用:Android 4.0及更高版本支持的DIn Android文档在此链接动画,这就是我使用Threads Buddy的原因我正在使用动画类看看这里它是从API级别1提供的至少尝试一下,看看您正在使用的最低API级别是多少?总是很乐意提供帮助,也感谢您的代码我从未想到Visibility_STATE可以如此积极地使用:D