Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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 TimeAnimator低于API级别16_Android_Animation_Android Animation - Fatal编程技术网

Android TimeAnimator低于API级别16

Android TimeAnimator低于API级别16,android,animation,android-animation,Android,Animation,Android Animation,由于TimeAnimator是ValueAnimator的一个子类,有没有办法构建一个ValueAnimator的子类,该子类的性能类似于API级别16以下的TimeAnimator?或者在API级别16以下使用TimeAnimator还有其他方法吗?我想要的是数到无穷大并正确计时。我有了一个想法,它就行了 public class TimeAnimatorCompat implements ValueAnimator.AnimatorUpdateListener{ protected

由于TimeAnimator是ValueAnimator的一个子类,有没有办法构建一个ValueAnimator的子类,该子类的性能类似于API级别16以下的TimeAnimator?或者在API级别16以下使用TimeAnimator还有其他方法吗?我想要的是数到无穷大并正确计时。

我有了一个想法,它就行了

public class TimeAnimatorCompat implements  ValueAnimator.AnimatorUpdateListener{
    protected ValueAnimator animator;
    protected long currentPlayTime = 0;
    protected TimeListenerCompat listener;
    private boolean ignoreNextUpdate = false;
    public TimeAnimatorCompat(){
        animator = ValueAnimator.ofInt(0, Integer.MAX_VALUE);
        animator.addUpdateListener(this);
        animator.setDuration(Integer.MAX_VALUE);
    }

    public void setCurrentPlayTime(long t){
        currentPlayTime = t;
    }

    public long getCurrentPlayTime(){
        return currentPlayTime;
    }

    public void start(){
        currentPlayTime = 0;
        animator.start();
    }

    public TimeListenerCompat getListener() {
        return listener;
    }

    public void setTimeListener(TimeListenerCompat listener) {
        this.listener = listener;
    }

    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        if(ignoreNextUpdate){
            ignoreNextUpdate = false;
            return;
        }
        long deltaTime = animation.getCurrentPlayTime();
        currentPlayTime += deltaTime;
        ignoreNextUpdate = true;
        animation.setCurrentPlayTime(0);
        if(listener != null){
            listener.onTimeUpdate(this, currentPlayTime, deltaTime);
        }
    }

    public void cancel(){
        animator.cancel();
    }

    public void pause(){
        animator.cancel();
    }

    public void resume(){
        animator.start();
    }

    public void end(){
        animator.end();
    }

    public interface TimeListenerCompat{
        void onTimeUpdate(TimeAnimatorCompat animation, long totalTime, long deltaTime);
    }
}

我有了一个主意,而且很管用

public class TimeAnimatorCompat implements  ValueAnimator.AnimatorUpdateListener{
    protected ValueAnimator animator;
    protected long currentPlayTime = 0;
    protected TimeListenerCompat listener;
    private boolean ignoreNextUpdate = false;
    public TimeAnimatorCompat(){
        animator = ValueAnimator.ofInt(0, Integer.MAX_VALUE);
        animator.addUpdateListener(this);
        animator.setDuration(Integer.MAX_VALUE);
    }

    public void setCurrentPlayTime(long t){
        currentPlayTime = t;
    }

    public long getCurrentPlayTime(){
        return currentPlayTime;
    }

    public void start(){
        currentPlayTime = 0;
        animator.start();
    }

    public TimeListenerCompat getListener() {
        return listener;
    }

    public void setTimeListener(TimeListenerCompat listener) {
        this.listener = listener;
    }

    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        if(ignoreNextUpdate){
            ignoreNextUpdate = false;
            return;
        }
        long deltaTime = animation.getCurrentPlayTime();
        currentPlayTime += deltaTime;
        ignoreNextUpdate = true;
        animation.setCurrentPlayTime(0);
        if(listener != null){
            listener.onTimeUpdate(this, currentPlayTime, deltaTime);
        }
    }

    public void cancel(){
        animator.cancel();
    }

    public void pause(){
        animator.cancel();
    }

    public void resume(){
        animator.start();
    }

    public void end(){
        animator.end();
    }

    public interface TimeListenerCompat{
        void onTimeUpdate(TimeAnimatorCompat animation, long totalTime, long deltaTime);
    }
}

您可能需要考虑使用九个旧的Android库。它对前蜜网有支持。你可能需要考虑使用九个旧的Android库。它有后端口到预蜂窝。