2

我试图在 ImageView 内显示一个大图像(比屏幕宽),我使用矩阵比例类型。

<ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/pizza_intro_test"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:scaleType="matrix" 
        />

但是,我无法在 ImageView 中对齐图像。我想显示图像的“右”部分,但 ImageView 显示“左”部分。

这是当前状态:

当前状态

这是我想要达到的状态:

期望的状态

4

4 回答 4

0

我通过设置源和目标 Rect 做了类似的事情。诀窍是在目标 Rect 上使用负值。这样您就可以在可见画布之外“开始绘制”图像的左侧,而右侧将在画布本身上绘制。

目标矩形应该是这样的:

float scale = canvas.getHeight() / (float)bm.getHeight(); 
Rect dest = new Rect(canvas.getWidth()-bm.getWidth()*scale,canvas.getWidth(), canvas.getHeight())

您可以在 onDraw() 上定义它并将其与

canvas.drawBitmap(bm, null, mDstRect, mPaint);

您不需要在 XML 或代码上设置任何 scaleType。

于 2013-08-06T10:42:13.323 回答
0

签出 Matrix.setRectToRect 方法并尝试实现它。
http://developer.android.com/reference/android/graphics/Matrix.html#setRectToRect%28android.graphics.RectF,%20android.graphics.RectF,%20android.graphics.Matrix.ScaleToFit%29

于 2012-12-27T18:24:46.010 回答
0

尝试将图像视图的重力设置为正确。

<ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:src="@drawable/pizza_intro_test"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:scaleType="matrix" 
        />
于 2013-07-15T20:06:56.363 回答
0

也许这为时已晚,但即使我今天也遇到了同样的问题并使用以下代码段修复了它。

所有对齐/缩放选项都在 scaleType 属性中。

现在,如果要将图像与 ImageView 的开头对齐,请使用android:scaleType="fitStart".

同样,android:scaleType="fitEnd"将其与 ImageView 的底部对齐。

于 2014-08-25T11:08:01.823 回答