ImageViewで特定のXY座標をズームするには、scaleXとfocalYの値をscale(PhotoViewの最大スケールと最小スケールの間にある必要があります)とブール値の値を渡してアニメーションを設定します。最大 - 最小スケールを取得する
コード:それは、画面上の任意のポイントすることができ
mPhotoView.getMinimumScale();
mPhotoView.getMaximumScale();
focalXとfocalYを、ここで私は1つが、画面の中央部であり、他の左上隅で2つの例をとっています。両方の場合のコードは以下のとおりです。
コード:
Random r = new Random();
float minScale = mPhotoView.getMinimumScale();
float maxScale = mPhotoView.getMaximumScale();
float randomScale = minScale + (r.nextFloat() * (maxScale - minScale));
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
int centerX=width/2;
int centerY =height/2;
/*pass a value of focalX and focalY to scale image to center*/
//mPhotoView.setScale(randomScale, centerX, centerY, true);
/*pass a value of focalX and focalY to scale image to top left corner*/
mPhotoView.setScale(randomScale, 0, 0, true);
'focalX'と、私はこれをチェックしましたが、私の元のXY位置が遠くビューの左上からである' focalY'はあなたのビューの左上隅からの相対オフセットです – pskink
@pskinkそれが拡大縮小している間のコーナー。 – Kuls
0、0を渡すと、ビューの左上隅でスケーリングが行われます。getWidth()/ 2、getHeight()/ 2の場合、ビューの中心などでスケーリングが行われます。 – pskink