1

ここに私の問題があります:
ImageViewのサイズがスケーリングされたドローアブルと等しくないと仮定して、スケーリング後にImageView内のドローアブルの表示サイズをピクセル単位で取得するにはどうすればよいですか?

多くのメソッドは、Drawableの元のサイズまたはImageViewのサイズを返すだけです。

これが私が欲しいものを説明する写真です:

http://image.noelshack.com/fichiers/2013/06/1360144144-sans-titre.png

1->ImageViewサイズ
2->ピクセルで取得したいスケーリングされた画像サイズ

ありがとうございました。

4

1 に答える 1

3

投稿した画像から、ImageView に FIT_CENTER (または imageView よりも大きいドローアブルを持つ CENTER_INSIDE) の scaleType があると仮定します

そのように表示サイズを計算できます

    boolean landscape = imageView.getWidth() > imageView.getHeight();

    float displayedHeight;
    float displayedWidth;

    if (landscape){
        displayedHeight = imageView.getHeight();
        displayedWidth = (float) drawableWidth * imageView.getHeight() / drawableHeight;
    } else {
        displayedHeight = (float) drawableHeight * imageView.getWidth() / drawableWidth;
        displayedWidth = imageView.getWidth();
    }

注: コードは読みやすくするために単純化されていません。

すべてのscaleTypesに適用できるもう1つのより堅牢なアプローチは、imageViewが画像をスケーリングするために使用したマトリックスを使用することです

float[] f = new float[9];
imageView.getImageMatrix().getValues(f);
float displayedWidth = drawableWidth * f[Matrix.MSCALE_X];
float displayedHeight = drawableHeight * f[Matrix.MSCALE_Y];
于 2015-01-16T10:58:17.280 に答える