1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-06 03:50:19 +02:00

background cover loading

This commit is contained in:
Nikolay Pultsin 2010-12-04 05:44:43 +00:00
parent 15959ba7f4
commit 9388f82ed0

View file

@ -30,9 +30,11 @@ import android.widget.*;
import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.zlibrary.core.image.ZLImage;
import org.geometerplus.zlibrary.core.image.ZLLoadableImage;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageManager;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageLoader;
import org.geometerplus.fbreader.tree.FBTree;
import org.geometerplus.fbreader.library.*;
@ -82,6 +84,12 @@ abstract class LibraryBaseActivity extends ListActivity {
private int myCoverWidth = -1;
private int myCoverHeight = -1;
private final Runnable myInvalidateViewsRunnable = new Runnable() {
public void run() {
getListView().invalidateViews();
}
};
public View getView(int position, View convertView, final ViewGroup parent) {
final FBTree tree = getItem(position);
final View view = (convertView != null) ? convertView :
@ -109,8 +117,18 @@ abstract class LibraryBaseActivity extends ListActivity {
Bitmap coverBitmap = null;
ZLImage cover = tree.getCover();
if (cover != null) {
final ZLAndroidImageData data =
((ZLAndroidImageManager)ZLAndroidImageManager.Instance()).getImageData(cover);
ZLAndroidImageData data = null;
final ZLAndroidImageManager mgr = (ZLAndroidImageManager)ZLAndroidImageManager.Instance();
if (cover instanceof ZLLoadableImage) {
final ZLLoadableImage img = (ZLLoadableImage)cover;
if (img.isSynchronized()) {
data = mgr.getImageData(img);
} else {
ZLAndroidImageLoader.Instance().startImageLoading(img, myInvalidateViewsRunnable);
}
} else {
data = mgr.getImageData(cover);
}
if (data != null) {
coverBitmap = data.getBitmap(2 * myCoverWidth, 2 * myCoverHeight);
}