Android TimeAnimator低于API级别16
由于TimeAnimator是ValueAnimator的一个子类,有没有办法构建一个ValueAnimator的子类,该子类的性能类似于API级别16以下的TimeAnimator?或者在API级别16以下使用TimeAnimator还有其他方法吗?我想要的是数到无穷大并正确计时。我有了一个想法,它就行了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
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库。它有后端口到预蜂窝。