Android 闪烁Alpha动画,无淡入淡出效果
我正在尝试实现一个闪烁动画 此代码使视图闪烁淡入和淡出:Android 闪烁Alpha动画,无淡入淡出效果,android,Android,我正在尝试实现一个闪烁动画 此代码使视图闪烁淡入和淡出: AlphaAnimation blink = new AlphaAnimation(0.0f, 1.0f); blink.setDuration(500); blink.setStartOffset(0); //changing it makes more than one animation appear in different time stamps. blink.setRepeatMode(Animation.REVERSE
AlphaAnimation blink = new AlphaAnimation(0.0f, 1.0f);
blink.setDuration(500);
blink.setStartOffset(0);
//changing it makes more than one animation appear in different time stamps.
blink.setRepeatMode(Animation.REVERSE);
blink.setRepeatCount(Animation.INFINITE);
我有两个问题:
setStartOffsetn;->更改n会使多个动画以不同的时间戳显示。没有同步。我希望它是同步的,所有的动画应该出现和消失在同一时间。
我不希望淡入或淡出,只是可见&消失了几毫秒的延迟。
有没有其他类别的动画,我必须使用,或我必须作出自定义动画。
请。帮助
所以,我的回答是。。。它是一个在某个时间间隔内切换视图可见性的类。当然可以用不同的方法解决,也许你会得到一些启发
public static class ViewBlinker {
private Handler handler = new Handler();
private Runnable blinker;
public ViewBlinker(final View v, final int interval) {
this.blinker = new Runnable() {
@Override
public void run() {
v.setVisibility(v.getVisibility()==View.VISIBLE?View.INVISIBLE:View.VISIBLE);
handler.postDelayed(blinker, interval);
}
};
}
public void startBlinking() {
handler.post(blinker);
}
public void stopBlinking() {
handler.removeCallbacks(blinker);
}
}
你是这样使用它的:
ViewBlinker blinker = new ViewBlinker(YOUR_BLINK_VIEW, YOUR_BLINK_INTERVAL);
blinker.startBlinking();
当您的视图完成闪烁时,调用
blinker.stopBlinking();
所以,我的回答是。。。它是一个在某个时间间隔内切换视图可见性的类。当然可以用不同的方法解决,也许你会得到一些启发
public static class ViewBlinker {
private Handler handler = new Handler();
private Runnable blinker;
public ViewBlinker(final View v, final int interval) {
this.blinker = new Runnable() {
@Override
public void run() {
v.setVisibility(v.getVisibility()==View.VISIBLE?View.INVISIBLE:View.VISIBLE);
handler.postDelayed(blinker, interval);
}
};
}
public void startBlinking() {
handler.post(blinker);
}
public void stopBlinking() {
handler.removeCallbacks(blinker);
}
}
你是这样使用它的:
ViewBlinker blinker = new ViewBlinker(YOUR_BLINK_VIEW, YOUR_BLINK_INTERVAL);
blinker.startBlinking();
当您的视图完成闪烁时,调用
blinker.stopBlinking();
对于不褪色的动画,您可以创建自己的自定义插值器:
import android.view.animation.Interpolator;
public class StepInterpolator implements Interpolator {
float mDutyCycle;
public StepInterpolator(float dutyCycle) {
mDutyCycle = dutyCycle;
}
@Override
public float getInterpolation(float input) {
return input < mDutyCycle ? 0 : 1;
}
}
对于不褪色的动画,您可以创建自己的自定义插值器:
import android.view.animation.Interpolator;
public class StepInterpolator implements Interpolator {
float mDutyCycle;
public StepInterpolator(float dutyCycle) {
mDutyCycle = dutyCycle;
}
@Override
public float getInterpolation(float input) {
return input < mDutyCycle ? 0 : 1;
}
}
如果在每个动画中都有不同的startOffset,那么它们当然不会同步运行,因为startOffset是不同的……如果不想制作任何动画,为什么还要使用动画?你可以将可见性设置为可见或不可见/消失,中间有一个延迟…看这个:我不想睡眠UI线程,这就是为什么我认为动画会是一个更好的主意。没有人说你应该睡眠UI线程,是的,你不应该这样做。。。只需在一段时间内切换可见性。我将创建一个答案,给我一些时间…如果在每个动画中有不同的startOffset,那么它们当然不会同步运行,因为startOffset是不同的…如果不想制作任何动画,为什么还要使用动画?你可以将可见性设置为可见或不可见/消失,中间有一个延迟…看这个:我不想睡眠UI线程,这就是为什么我认为动画会是一个更好的主意。没有人说你应该睡眠UI线程,是的,你不应该这样做。。。只需在一段时间内切换可见性。我会创造一个答案,给我一些时间…谢谢你。。。工作得很有魅力!如果你能解释一下代码就好了:谢谢你。。。工作得很有魅力!如果您能解释一下代码,那就太好了: