/*
* Copyright (c) 2013. wyouflf (wyouflf@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.lidroid.xutils.bitmap.callback;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.ImageView;
import com.lidroid.xutils.bitmap.BitmapDisplayConfig;
public abstract class BitmapLoadCallBack<T extends View> {
/**
* Call back when start loading.
*
* @param container
* @param uri
* @param config
*/
public void onPreLoad(T container, String uri, BitmapDisplayConfig config) {
}
/**
* Call back when start loading.
*
* @param container
* @param uri
* @param config
*/
public void onLoadStarted(T container, String uri, BitmapDisplayConfig config) {
}
/**
* Call back when loading.
*
* @param container
* @param uri
* @param config
* @param total
* @param current
*/
public void onLoading(T container, String uri, BitmapDisplayConfig config, long total, long current) {
}
/**
* Call back when bitmap has loaded.
*
* @param container
* @param uri
* @param bitmap
* @param config
*/
public abstract void onLoadCompleted(T container, String uri, Bitmap bitmap, BitmapDisplayConfig config, BitmapLoadFrom from);
/**
* Call back when bitmap failed to load.
*
* @param container
* @param uri
* @param drawable
*/
public abstract void onLoadFailed(T container, String uri, Drawable drawable);
private BitmapSetter<T> bitmapSetter;
public void setBitmapSetter(BitmapSetter<T> bitmapSetter) {
this.bitmapSetter = bitmapSetter;
}
public void setBitmap(T container, Bitmap bitmap) {
if (bitmapSetter != null) {
bitmapSetter.setBitmap(container, bitmap);
} else if (container instanceof ImageView) {
((ImageView) container).setImageBitmap(bitmap);
} else {
container.setBackgroundDrawable(new BitmapDrawable(container.getResources(), bitmap));
}
}
public void setDrawable(T container, Drawable drawable) {
if (bitmapSetter != null) {
bitmapSetter.setDrawable(container, drawable);
} else if (container instanceof ImageView) {
((ImageView) container).setImageDrawable(drawable);
} else {
container.setBackgroundDrawable(drawable);
}
}
public Drawable getDrawable(T container) {
if (bitmapSetter != null) {
return bitmapSetter.getDrawable(container);
} else if (container instanceof ImageView) {
return ((ImageView) container).getDrawable();
} else {
return container.getBackground();
}
}
}