下面列出了怎么用android.graphics.drawable.Drawable.Callback的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void invalidateDrawable(@NonNull final Drawable who) {
for (int i = 0; i < mCallbacks.size(); i++) {
final CallbackWeakReference reference = mCallbacks.get(i);
final Callback callback = reference.get();
if (callback != null) {
if (mUseViewInvalidate && callback instanceof View) {
((View) callback).invalidate();
} else {
callback.invalidateDrawable(who);
}
} else {
// Always remove null references to reduce list size
mCallbacks.remove(reference);
}
}
}
public Ring(Callback callback) {
this.mCallback = callback;
this.mPaint.setStrokeCap(Cap.SQUARE);
this.mPaint.setAntiAlias(true);
this.mPaint.setStyle(Style.STROKE);
this.mArrowPaint.setStyle(Style.FILL);
this.mArrowPaint.setAntiAlias(true);
}
@Override
public void invalidateDrawable(@NonNull Drawable who) {
Callback callback = getCallback();
if (callback != null) {
callback.invalidateDrawable(this);
}
}
@Override
public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) {
Callback callback = getCallback();
if (callback != null) {
callback.scheduleDrawable(this, what, when);
}
}
@Override
public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) {
Callback callback = getCallback();
if (callback != null) {
callback.unscheduleDrawable(this, what);
}
}
@Override
public void scheduleDrawable(@NonNull final Drawable who, @NonNull final Runnable what, final long when) {
for (int i = 0; i < mCallbacks.size(); i++) {
final CallbackWeakReference reference = mCallbacks.get(i);
final Callback callback = reference.get();
if (callback != null) {
callback.scheduleDrawable(who, what, when);
} else {
// Always remove null references to reduce Set size
mCallbacks.remove(reference);
}
}
}
@Override
public void unscheduleDrawable(@NonNull final Drawable who, @NonNull final Runnable what) {
for (int i = 0; i < mCallbacks.size(); i++) {
final CallbackWeakReference reference = mCallbacks.get(i);
final Callback callback = reference.get();
if (callback != null) {
callback.unscheduleDrawable(who, what);
} else {
// Always remove null references to reduce list size
mCallbacks.remove(reference);
}
}
}
/**
* Associates given {@link Callback}. If callback has been already added, nothing happens.
*
* @param callback Callback to be associated
*/
public void addView(final Callback callback) {
for (int i = 0; i < mCallbacks.size(); i++) {
final CallbackWeakReference reference = mCallbacks.get(i);
final Callback item = reference.get();
if (item == null) {
// Always remove null references to reduce list size
mCallbacks.remove(reference);
}
}
mCallbacks.addIfAbsent(new CallbackWeakReference(callback));
}
/**
* Disassociates given {@link Callback}. If callback is not associated, nothing happens.
*
* @param callback Callback to be disassociated
*/
public void removeView(final Callback callback) {
for (int i = 0; i < mCallbacks.size(); i++) {
final CallbackWeakReference reference = mCallbacks.get(i);
final Callback item = reference.get();
if (item == null || item == callback) {
// Always remove null references to reduce list size
mCallbacks.remove(reference);
}
}
}
public AnimatingImageSpan(Drawable drawable, Callback callback) {
super(drawable, ALIGN_BOTTOM);
drawable.setCallback(callback);
}
public AnimatingImageSpan(Drawable drawable, Callback callback) {
super(drawable, ALIGN_BOTTOM);
drawable.setCallback(callback);
}
public AnimatingImageSpan(Drawable drawable, Callback callback) {
super(drawable, ALIGN_BOTTOM);
drawable.setCallback(callback);
}
public AnimatingImageSpan(Drawable drawable, Callback callback) {
super(drawable, ALIGN_BOTTOM);
drawable.setCallback(callback);
}
CallbackWeakReference(final Callback r) {
super(r);
}
@Override
public int hashCode() {
final Callback callback = get();
return callback != null ? callback.hashCode() : 0;
}