package com.abewy.android.apps.klyph.widget.coverImage;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.ImageView;
public abstract class CoverImageView extends ImageView
{
private int yOffset = 0;
public CoverImageView(Context context)
{
super(context);
setScaleType(ScaleType.MATRIX);
}
public CoverImageView(Context context, AttributeSet attrs)
{
super(context, attrs);
setScaleType(ScaleType.MATRIX);
}
public CoverImageView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
setScaleType(ScaleType.MATRIX);
}
abstract protected float getRatio();
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), (int) (getMeasuredWidth() * getRatio()));
}
public void setOffset(int yOffset)
{
if (yOffset < 100)
this.yOffset = (int) (yOffset / 2);
else
this.yOffset = (int) (yOffset / 4);
}
@Override
protected boolean setFrame(int l, int t, int r, int b)
{
boolean changed = super.setFrame(l, t, r, b);
if (getDrawable() == null)
return changed;
int dwidth = getDrawable().getIntrinsicWidth();
int dheight = getDrawable().getIntrinsicHeight();
int vwidth = getWidth() - getPaddingLeft() - getPaddingRight();
// int vheight = getHeight() - getPaddingTop() - getPaddingBottom();
Matrix matrix = new Matrix();
float scale;
float dy = 0;
scale = (float) vwidth / dwidth;
dy = (float) ((dheight * scale) * (yOffset / 100f));
matrix.setScale(scale, scale);
matrix.postTranslate(0, -dy);
setImageMatrix(matrix);
return changed;
}
}