package quickutils.core.views.image; import android.content.Context; import android.graphics.Matrix; import android.util.AttributeSet; import android.widget.ImageView; public class TopCropImageView extends ImageView { public TopCropImageView(Context context) { super(context); setScaleType(ScaleType.MATRIX); } public TopCropImageView(Context context, AttributeSet attrs) { super(context, attrs); setScaleType(ScaleType.MATRIX); } public TopCropImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setScaleType(ScaleType.MATRIX); } @Override protected boolean setFrame(int l, int t, int r, int b) { Matrix matrix = getImageMatrix(); try { float scale; int viewWidth = getWidth() - getPaddingLeft() - getPaddingRight(); int viewHeight = getHeight() - getPaddingTop() - getPaddingBottom(); int drawableWidth = getDrawable().getIntrinsicWidth(); int drawableHeight = getDrawable().getIntrinsicHeight(); if (drawableWidth * viewHeight > drawableHeight * viewWidth) { scale = (float) viewHeight / (float) drawableHeight; } else { scale = (float) viewWidth / (float) drawableWidth; } matrix.setScale(scale, scale); setImageMatrix(matrix); } catch (Exception e) { // Log.d(Utils.APP_PACKAGE_NAME,e.getMessage()); } return super.setFrame(l, t, r, b); } }