package com.banking.xc.utils.adapter;
import java.io.IOException;
import java.io.InputStream;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Rect;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import com.banking.xc.utils.Log;
import com.banking.xc.utils.SimpleSubViewBinder;
import com.banking.xc.utils.SubViewBinder;
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 MyBitmapDrawable extends BitmapDrawable {
private SubViewHolder subViewHolder;
private BitmapDigest digest;
private boolean isGc;
@Override
public void setTargetDensity(Canvas canvas) {
// TODO Auto-generated method stub
super.setTargetDensity(canvas);
}
@Override
public void setTargetDensity(DisplayMetrics metrics) {
// TODO Auto-generated method stub
super.setTargetDensity(metrics);
}
@Override
public void setTargetDensity(int density) {
// TODO Auto-generated method stub
super.setTargetDensity(density);
}
public MyBitmapDrawable(Resources res, SubViewHolder subViewHolder, BitmapDigest digest, Bitmap bitmap) {
super(res, bitmap);
this.subViewHolder = subViewHolder;
this.digest = digest;
}
@Override
public int getGravity() {
// TODO Auto-generated method stub
return super.getGravity();
}
@Override
public void setGravity(int gravity) {
// TODO Auto-generated method stub
super.setGravity(gravity);
}
@Override
public void setAntiAlias(boolean aa) {
// TODO Auto-generated method stub
super.setAntiAlias(aa);
}
@Override
public void setFilterBitmap(boolean filter) {
// TODO Auto-generated method stub
super.setFilterBitmap(filter);
}
@Override
public void setDither(boolean dither) {
// TODO Auto-generated method stub
super.setDither(dither);
}
@Override
public TileMode getTileModeX() {
// TODO Auto-generated method stub
return super.getTileModeX();
}
@Override
public TileMode getTileModeY() {
// TODO Auto-generated method stub
return super.getTileModeY();
}
@Override
public void setTileModeX(TileMode mode) {
// TODO Auto-generated method stub
super.setTileModeX(mode);
}
@Override
public void setTileModeXY(TileMode xmode, TileMode ymode) {
// TODO Auto-generated method stub
super.setTileModeXY(xmode, ymode);
}
@Override
public int getChangingConfigurations() {
// TODO Auto-generated method stub
return super.getChangingConfigurations();
}
@Override
protected void onBoundsChange(Rect bounds) {
// TODO Auto-generated method stub
super.onBoundsChange(bounds);
}
@Override
public void draw(Canvas canvas) {
try {
super.draw(canvas);
if (Log.D) {
Log.d(MyBitmapDrawable.class.getSimpleName(), "draw() position=" + subViewHolder.getPosition() + " super.draw() -->> ");
}
} catch (Throwable e) {
if (null != getBitmap() && getBitmap().isRecycled()) {
if (isGc) {
if (Log.D) {
Log.d(MyBitmapDrawable.class.getSimpleName(), "draw() isGc -->> ");
}
return;
}
if (Log.D) {
Log.d(MyBitmapDrawable.class.getSimpleName(), "draw() position=" + subViewHolder.getPosition() + " isRecycled -->> ");
}
SubViewBinder svb = subViewHolder.getAdapter().getViewBinder();
if (svb instanceof SimpleSubViewBinder) {
SimpleSubViewBinder ssvb = (SimpleSubViewBinder) svb;
SimpleImageProcessor processor = ssvb.getSimpleImageProcessor();
ImageState state = GlobalImageCache.getImageState(digest);
state.none();
processor.show(subViewHolder, state);
gc();
}
return;
}
}
}
@Override
public void setAlpha(int alpha) {
// TODO Auto-generated method stub
super.setAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
// TODO Auto-generated method stub
super.setColorFilter(cf);
}
@Override
public Drawable mutate() {
// TODO Auto-generated method stub
return super.mutate();
}
@Override
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs) throws XmlPullParserException, IOException {
// TODO Auto-generated method stub
super.inflate(r, parser, attrs);
}
@Override
public int getIntrinsicWidth() {
// TODO Auto-generated method stub
return super.getIntrinsicWidth();
}
@Override
public int getIntrinsicHeight() {
// TODO Auto-generated method stub
return super.getIntrinsicHeight();
}
@Override
public int getOpacity() {
// TODO Auto-generated method stub
return super.getOpacity();
}
public void gc() {
subViewHolder = null;
digest = null;
isGc = true;
}
}