package com.banking.xc.utils.adapter;
import skytv_com.banking.enjoymovie.MyApplication;
import android.graphics.Bitmap;
import android.os.Handler;
import com.banking.xc.utils.ImageUtil;
import com.banking.xc.utils.Log;
import com.banking.xc.utils.ImageUtil.InputWay;
import com.banking.xc.utils.MySimpleAdapter.ImageProcessor;
import com.banking.xc.utils.SimpleBeanAdapter.SubViewHolder;
import com.banking.xc.utils.cache.GlobalImageCache;
import com.banking.xc.utils.cache.GlobalImageCache.BitmapDigest;
import com.banking.xc.utils.cache.GlobalImageCache.ImageState;
public class SimpleImageProcessor implements ImageProcessor {
@Override
public Bitmap create(InputWay inputWay, BitmapDigest bd) {
return ImageUtil.createBitmap(inputWay, bd);
}
@Override
public void show(SubViewHolder subViewHolder, ImageState is) {
if (Log.D) {
Log.d(SimpleImageProcessor.class.getName(), "show() position = " + subViewHolder.getPosition() + " -->> ");
}
if (null == subViewHolder.getSubView() && // 从网络加载回来,
subViewHolder.getAdapter().getAdapterHelper().getAdapterView().getChildCount() < 1// 界面还没绘画出来
) {
if (Log.D) {
Log.d(SimpleImageProcessor.class.getName(), "show() sleep 200 -->> ");
}
try {
Thread.sleep(200);// 睡眠200毫秒
} catch (InterruptedException e) {
}
}
Thread uiThread = MyApplication.getInstance().getUiThread();
if (Thread.currentThread() == uiThread) {
if (Log.D) {
Log.d(SimpleImageProcessor.class.getName(), "show() uiThread true -->> ");
}
provideUIRunnable(subViewHolder, is).run();
} else {
if (Log.D) {
Log.d(SimpleImageProcessor.class.getName(), "show() uiThread false -->> ");
}
subViewHolder.getAdapter().UIWorkCentralized(provideUIRunnable(subViewHolder, is));
}
boolean loaded = false;
Object o = subViewHolder.getMoreParameter(SubViewHolder.MORE_PARAMETER_LOADED);
if (null != o && o instanceof Boolean) {
loaded = (Boolean) o;
}
if(loaded){// 用完需要马上重置
subViewHolder.putMoreParameter(SubViewHolder.MORE_PARAMETER_LOADED, false);
}
if (Log.D) {
Log.d(SimpleImageProcessor.class.getName(), "show() is.getState() -->> " + is.getState());
Log.d(SimpleImageProcessor.class.getName(), "show() loaded -->> " + loaded);
}
if ((GlobalImageCache.STATE_NONE == is.getState() || GlobalImageCache.STATE_FAILURE == is.getState()) && !loaded) {
if (Log.D) {
Log.d(SimpleImageProcessor.class.getName(), "STATE_NONE or STATE_FAILURE position = " + subViewHolder.getPosition() + " -->> ");
}
loadImage(subViewHolder, is);
}
}
protected void loadImage(SubViewHolder subViewHolder, ImageState is) {
new ImageLoader(subViewHolder, is, this)//
.load();
}
protected UIRunnable provideUIRunnable(SubViewHolder subViewHolder, ImageState imageState) {
return new UIRunnable(subViewHolder, imageState);
}
}