/**
* @description:
* @author chenshiqiang E-mail:csqwyyx@163.com
* @date 2014年5月11日 下午4:54:28
* @version 1.0
*/
package com.csq.thesceneryalong.ui.views.scenery;
import it.sephiroth.android.library.imagezoom.ImageViewTouch;
import it.sephiroth.android.library.imagezoom.ImageViewTouchBase;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import com.csq.thesceneryalong.R;
import com.csq.thesceneryalong.constant.FinalConstants;
import com.csq.thesceneryalong.db.Scenery;
import com.csq.thesceneryalong.models.models.SceneryType;
import com.csq.thesceneryalong.utils.BitmapUtil;
import com.csq.thesceneryalong.utils.dbmodel.SceneryUtil;
import com.csq.thesceneryalong.utils.thumb.ThumbnailLoader;
public class ScenenryImageItemView extends RelativeLayout implements ScenenryItemView{
// ------------------------ Constants ------------------------
// ------------------------- Fields --------------------------
protected ImageViewTouch ivMedia;
private ViewGroup mDisallowInterceptParent;
private Scenery scenery;
private Bitmap bitmap;
// ----------------------- Constructors ----------------------
public ScenenryImageItemView(Context context, ViewGroup mDisallowInterceptParent) {
super(context);
// TODO Auto-generated constructor stub
this.mDisallowInterceptParent = mDisallowInterceptParent;
initView(context);
}
private void initView(Context context){
View v = LayoutInflater.from(context).inflate(R.layout.itemview_scenery_image,
this,
true);
ivMedia = (ImageViewTouch) v.findViewById(R.id.ivMedia);
ivMedia.setDisallowInterceptParent(mDisallowInterceptParent);
}
// -------- Methods for/from SuperClass/Interfaces -----------
@Override
public void setData(Scenery scenery) {
// TODO Auto-generated method stub
this.scenery = scenery;
setThumb();
}
@Override
public void releaseResources() {
// TODO Auto-generated method stub
ivMedia.setImageBitmap(null);
ivMedia.setDisallowInterceptParent(null);
mDisallowInterceptParent = null;
if(bitmap != null){
bitmap.recycle();
bitmap = null;
}
}
@Override
public void onShow() {
// TODO Auto-generated method stub
bitmap = BitmapUtil.decodeBitmapFromFile(
getContext(),
SceneryUtil.getSceneryFilePath(scenery),
FinalConstants.pic_minSideLength_4m,
FinalConstants.pic_maxNumOfPixels_4m);
if(bitmap != null){
//final int size = -1; // use the original image size
ivMedia.setImageBitmap(bitmap,
new Matrix(),
ImageViewTouchBase.ZOOM_INVALID,
ImageViewTouchBase.ZOOM_INVALID );
}
}
@Override
public void onHide() {
// TODO Auto-generated method stub
ivMedia.setImageBitmap(null);
if(bitmap != null){
bitmap.recycle();
bitmap = null;
}
setThumb();
}
// --------------------- Methods public ----------------------
// --------------------- Methods private ---------------------
private void setThumb(){
if(scenery != null){
Bitmap thumb = ThumbnailLoader.getInstance().getThumb(
SceneryUtil.getSceneryFilePath(scenery),
SceneryType.image);
//int scale = getWidth() / thumb.getWidth();
ivMedia.setImageBitmap(thumb,
new Matrix(),
1,
1);
}
}
// --------------------- Getter & Setter ---------------------
// --------------- Inner and Anonymous Classes ---------------
}