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

イメージビューの重力を右に設定してみてください。

<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

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

ソースと宛先の Rect を設定して、同様のことを行いました。トリックは、宛先 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 に答える