ピンチズームを実際に実装することについてはたくさんのスレッドがあることを私は知っています-しかし、私はすでにこれまでに到達しました。
SimpleScaleGestureListenerを使用してピンチを処理しています。画像の高さを画面サイズと同じに保つよりも遠くにズームアウトできないようにすることができました(したがって、画像の高さは常に少なくとも使用可能な画面サイズの高さになります)。
ただし、画像がこれらの境界の外側にパンされているかどうかを自動的に検出する方法を探しています。画像を表示する標準のAndroidの方法と同じように。したがって、ズームインして画像を上にパンしてからズームアウトすると、画像の下部が画面の下部に到達したことを検出し、それに応じてズームの「ピボット」が調整されるため、「画像自体の上または下の「空白」。誰か助けてもらえますか?
参考までに、これが私のonScaleメソッドとonDrawメソッドです。
public boolean onScale(ScaleGestureDetector detector){
float minScale = (float) ((float) SCREEN_SIZE.y / (float) DRAWABLE_SIZE.y);
mScaleFactor *= detector.getScaleFactor();
mScaleFactor = Math.max(minScale, Math.min(mScaleFactor, 5.0f));
invalidate();
return true;
}
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.drawColor(Color.DKGRAY);
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor, getDrawable().getIntrinsicWidth() / 2,
getDrawable().getIntrinsicHeight() / 2);
this.getDrawable().draw(canvas);
canvas.restore();
}