簡體   English   中英

在Android中,如何移動已裁剪的圖片? (高級ImageView定位)

[英]In Android, how to shift a cropped Image? (advanced ImageView positioning)

我試圖在ImageView顯示較大圖片的特定部分/框架。 我嘗試了幾種不同的XML屬性( scaleTypemaxHeight等),但我自己卻不知道。

基本上我想要的東西,就是只顯示該頂部此的大局觀 ,其位於我的“繪制”文件夾,在我的活動的頂部。

到目前為止的代碼:

<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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM