Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 闪烁Alpha动画,无淡入淡出效果_Android - Fatal编程技术网

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线程,是的,你不应该这样做。。。只需在一段时间内切换可见性。我会创造一个答案,给我一些时间…谢谢你。。。工作得很有魅力!如果你能解释一下代码就好了:谢谢你。。。工作得很有魅力!如果您能解释一下代码,那就太好了: