Javad Abedi Javad Abedi - 1 year ago 87
Android Question

How set imageview scaletype to topCrop

I'm coding android and I have a imageview. I want to set scaletype of this to topcrop.
I could find centercrop in options, but it's not my request. How do I do?

Jay Jay
Answer Source

Custom Android ImageView for top-crop scaling of the contained drawable.

import android.content.Context;
import android.widget.ImageView;

* ImageView to display top-crop scale of an image view.
* @author Chris Arriola
public class TopCropImageView extends ImageView {

public TopCropImageView(Context context) {

protected boolean setFrame(int l, int t, int r, int b) {
    final Matrix matrix = getImageMatrix();

    float scale;
    final int viewWidth = getWidth() - getPaddingLeft() - getPaddingRight();
    final int viewHeight = getHeight() - getPaddingTop() - getPaddingBottom();
    final int drawableWidth = getDrawable().getIntrinsicWidth();
    final int drawableHeight = getDrawable().getIntrinsicHeight();

    if (drawableWidth * viewHeight > drawableHeight * viewWidth) {
        scale = (float) viewHeight / (float) drawableHeight;
    } else {
        scale = (float) viewWidth / (float) drawableWidth;

    matrix.setScale(scale, scale);

    return super.setFrame(l, t, r, b);