Android 在安卓系统中,如何移动裁剪后的图像?(高级图像视图定位)

Android 在安卓系统中,如何移动裁剪后的图像?(高级图像视图定位),android,imageview,crop,Android,Imageview,Crop,我试图在图像视图中显示更大图片的特定部分/帧。 我尝试了几种不同的XML属性(scaleType,maxHeight,等等),但我自己无法理解 基本上,我想要的是,只显示我活动顶部的“可绘制”文件夹中的这些内容 迄今为止的代码: <ImageView android:layout_width="match_parent" android:layout_height="20dp" android:layout_marginTop="1dp"

我试图在
图像视图中显示更大图片的特定部分/帧。
我尝试了几种不同的XML属性(
scaleType
maxHeight
,等等),但我自己无法理解

基本上,我想要的是,只显示我活动顶部的“可绘制”文件夹中的这些内容

迄今为止的代码:

<ImageView
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_marginTop="1dp"
        android:src="@drawable/coffee"
        android:scaleType="centerCrop" />


要获得想要的结果,我可以做些什么,即移动裁剪后的图像以仅显示顶部。

试试这一个,它工作正常:

public class TopCropImageView extends ImageView {
    public TopCropImageView(Context context) {
        super(context);
        setScaleType(ScaleType.MATRIX);
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        recomputeImgMatrix();
    }

    @Override
    protected boolean setFrame(int l, int t, int r, int b) {
        recomputeImgMatrix();
        return super.setFrame(l, t, r, b);
    }      

    private void recomputeImgMatrix() {
        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);
        setImageMatrix(matrix);
    }
}

android:scaleType=“fitStart”不起作用?遗憾的是,结果是:谢谢你提供了一个解决方案,但我一直在寻找一个较短的XML解决方案,如果它需要这么多java代码,只使用第二个已经手动裁剪的图像作为资源会简单得多。