2

私は、すべての Android デバイスで見栄えがよくなければならないアプリを設計しています。アクティビティで背景を設定したい。使用したい画像の右下隅に重要な図があります 必要なもの: - 縦横比を維持 - 元の画像の右下隅が表示されている必要があります - フルスクリーン - 縦向きと横向きで動作する必要があります

私はすべてのスケールタイプオプションを試しましたが、フィットオプションは画面全体を埋めず、センタークロップはすべての側面で切り取られます(したがって、右下隅の一部がスライスされます)。

4

2 に答える 2

1

少し遅れているようですが、回答を投稿したいと思います。幅は常にトリミングされていますが、左上にシフトしたビューが必要でした。このライブラリ ( https://github.com/cesards/CropImageView ) を見つけましたが、その一部だけを使用することにしました。カスタム画像ビューのコンストラクターでsetFrameスケールタイプをオーバーライドして設定することになりました。Matrix

@Override
protected boolean setFrame(int l, int t, int r, int b) {
    boolean changed = super.setFrame(l, t, r, b);

    int viewWidth = r - getPaddingLeft() - getPaddingRight();
    int viewHeight = b - getPaddingTop() - getPaddingBottom();

    if (viewHeight > 0 && viewWidth > 0) {
        final Matrix matrixCopy = new Matrix();
        matrixCopy.set(getImageMatrix());

        final Drawable drawable = getDrawable();
        int drawableWidth = drawable.getIntrinsicWidth();
        int drawableHeight = drawable.getIntrinsicHeight();

        float scaleY = (float) viewHeight / (float) drawableHeight;
        float scaleX = (float) viewWidth / (float) drawableWidth;
        float scale = scaleX > scaleY ? scaleX : scaleY;
        matrixCopy.setScale(scale, scale);
        setImageMatrix(matrixCopy);
    }
    return changed;
}
于 2016-05-10T11:58:56.083 に答える