下面列出了怎么用android.graphics.drawable.Animatable2的API类实例代码及写法,或者点击链接到github查看源代码。
public static void addListener(AnimatedVectorDrawable drawable, Object callback) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (callback instanceof Animatable2.AnimationCallback) {
drawable.registerAnimationCallback((Animatable2.AnimationCallback) callback);
} else {
throw new IllegalArgumentException("Callback parameter must implement " + Animatable2.AnimationCallback.class.getName());
}
}
}
public static boolean removeListener(AnimatedVectorDrawable drawable, Object callback) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (callback instanceof Animatable2.AnimationCallback) {
return drawable.unregisterAnimationCallback((Animatable2.AnimationCallback) callback);
} else {
throw new IllegalArgumentException("Callback parameter must implement " + Animatable2.AnimationCallback.class.getName());
}
}
return true;
}
public static void addListener(AnimatedVectorDrawable drawable, Object callback) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (callback instanceof Animatable2.AnimationCallback) {
drawable.registerAnimationCallback((Animatable2.AnimationCallback) callback);
} else {
throw new IllegalArgumentException("Callback parameter must implement " + Animatable2.AnimationCallback.class.getName());
}
}
}
public static boolean removeListener(AnimatedVectorDrawable drawable, Object callback) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (callback instanceof Animatable2.AnimationCallback) {
return drawable.unregisterAnimationCallback((Animatable2.AnimationCallback) callback);
} else {
throw new IllegalArgumentException("Callback parameter must implement " + Animatable2.AnimationCallback.class.getName());
}
}
return true;
}
@CheckResult
@NonNull
@TargetApi(Build.VERSION_CODES.M)
public static Observable<Drawable> starts(Animatable2 animatable2){
checkNotNull(animatable2, "animatable2 == null");
return Observable.create(new Animatable2ListenerOnSubscribe(animatable2, AnimationEvent.START));
}
@CheckResult
@NonNull
@TargetApi(Build.VERSION_CODES.M)
public static Observable<Drawable> ends(Animatable2 animatable2){
checkNotNull(animatable2, "animatable2 == null");
return Observable.create(new Animatable2ListenerOnSubscribe(animatable2, AnimationEvent.END));
}
public CheckInDrawable(Context context, int animatedCheckInDrawableRes,
int animatedCancelDrawableRes, int checkInDrawableRes, int cancelDrawableRes) {
this.context = context;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkInDrawable = context.getDrawable(animatedCheckInDrawableRes);
cancelDrawable = context.getDrawable(animatedCancelDrawableRes);
callbacks = new Animatable2.AnimationCallback() {
@RequiresApi(api = Build.VERSION_CODES.M) @Override
public void onAnimationEnd(Drawable drawable) {
((AnimatedVectorDrawable) checkInDrawable).clearAnimationCallbacks();
((AnimatedVectorDrawable) checkInDrawable).reset();
((AnimatedVectorDrawable) cancelDrawable).clearAnimationCallbacks();
((AnimatedVectorDrawable) cancelDrawable).reset();
updateWatchingDrawable(watching);
}
};
} else {
checkInDrawable =
VectorDrawableCompat.create(context.getResources(), checkInDrawableRes, null);
cancelDrawable = VectorDrawableCompat.create(context.getResources(), cancelDrawableRes, null);
}
checkInDrawable.setCallback(this);
cancelDrawable.setCallback(this);
currentDrawable = checkInDrawable;
}
Animatable2ListenerOnSubscribe(Animatable2 animatable2, int eventToCallOn) {
this.animatable2 = animatable2;
this.eventToCallOn = eventToCallOn;
}