19

コードは単純です:

<ImageView android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:src="@drawable/cat"/>

fill_parent幅と高さに使用されるImageViewに注意してください。

画像catは小さな画像であり、ImageViewに合わせて拡大され、同時に幅と高さの比率が維持されます。

私の質問は、画像の表示サイズを取得する方法ですか?私は試した:

imageView.getDrawable().getIntrinsicHeight()

しかし、それは画像の元の高さですcat

私は試した:

imageView.getDrawable().getBounds()

しかし、これはを返しますRect(0,0,0,0)

4

4 に答える 4

55

以下が機能します。

ih=imageView.getMeasuredHeight();//height of imageView
iw=imageView.getMeasuredWidth();//width of imageView
iH=imageView.getDrawable().getIntrinsicHeight();//original height of underlying image
iW=imageView.getDrawable().getIntrinsicWidth();//original width of underlying image

if (ih/iH<=iw/iW) iw=iW*ih/iH;//rescaled width of image within ImageView
else ih= iH*iw/iW;//rescaled height of image within ImageView

(iw x ih) は、ビュー内の画像の実際の再スケーリング (幅 x 高さ) (つまり、画像の表示サイズ) を表します。


編集:上記の回答(およびintで動作するもの)を書くためのより良い方法だと思います:

final int actualHeight, actualWidth;
final int imageViewHeight = imageView.getHeight(), imageViewWidth = imageView.getWidth();
final int bitmapHeight = ..., bitmapWidth = ...;
if (imageViewHeight * bitmapWidth <= imageViewWidth * bitmapHeight) {
    actualWidth = bitmapWidth * imageViewHeight / bitmapHeight;
    actualHeight = imageViewHeight;
} else {
    actualHeight = bitmapHeight * imageViewWidth / bitmapWidth;
    actualWidth = imageViewWidth;
}

return new Point(actualWidth,actualHeight);
于 2012-11-10T01:51:58.520 に答える
-1

使用する

// For getting imageview height
imgObj.getMeasuredHeight()


// For getting imageview width
imgObj.getMeasuredWidth();


//For getting image height inside ImageView
 imgObj.getDrawable().getIntrinsicHeight();


//For getting image width inside ImageView
 imgObj.getDrawable().getIntrinsicWidth();
于 2012-09-17T16:59:52.323 に答える