0

ズームインズームアウト後にImageViewの高さと幅を取得する方法。

私は次のコードを使用しています:

mRectSrc.left = (int)(panX * bitmapWidth - viewWidth / (zoomX * 2));
            mRectSrc.top = (int)(panY * bitmapHeight - viewHeight / (zoomY * 2));
            mRectSrc.right = (int)(mRectSrc.left + viewWidth / zoomX);
            mRectSrc.bottom = (int)(mRectSrc.top + viewHeight / zoomY);
            mRectDst.left = getLeft();
            mRectDst.top = getTop();
            mRectDst.right = getRight();
            mRectDst.bottom = getBottom();

            // Adjust source rectangle so that it fits within the source image.
            if (mRectSrc.left < 0) {
                mRectDst.left += -mRectSrc.left * zoomX;
                mRectSrc.left = 0;
            }
            if (mRectSrc.right > bitmapWidth) {
                mRectDst.right -= (mRectSrc.right - bitmapWidth) * zoomX;
                mRectSrc.right = bitmapWidth;
            }
            if (mRectSrc.top < 0) {
                mRectDst.top += -mRectSrc.top * zoomY;
                mRectSrc.top = 0;
            }
            if (mRectSrc.bottom > bitmapHeight) {
                mRectDst.bottom -= (mRectSrc.bottom - bitmapHeight) * zoomY;
                mRectSrc.bottom = bitmapHeight;
            }

            canvas.drawBitmap(mBitmap, mRectSrc, mRectDst, mPaint);

したがって、このコードを使用すると、画像にズーム効果が得られます。ズームインおよびズームアウトした後、ビットマップの高さと幅を取得するにはどうすればよいですか。

4

1 に答える 1

1

画像ビューに添付されたビットマップのサイズを取得するための組み込み関数を探してみましたが、見つかりませんでした。だから、私は回避策を作りました。ビットマップの初期の高さと幅を変数に保存し、これらの変数の値を倍率で更新するだけです。
これは、画像に添付されたビットマップを取得する方法です (常に初期サイズが返されます)。

Drawable d = imageView.getDrawable();
    Bitmap bmp = ((BitmapDrawable)d).getBitmap();
    float w = bmp.getWidth();
    float h = bmp.getHeight();

値を更新する方法:

public void updateSize(float scaleFactor)
{
     w *= scaleFactor;
     h *= scaleFactor;
}

画像にズームを追加している場所からこのメソッドを呼び出すことができます。

于 2012-09-14T07:57:08.017 に答える