WebView にキャンバスを実装していますが、WebView のズーム レベルに応じてキャンバスを拡大縮小する必要があります。aと組み合わせるcanvas.scale()
とSimpleOnScaleListener
うまくいきます。ダブルタップの場合、ダブルタップGestureDetector
があったことを検出し、それに応じて倍率を設定する を使用しています。ダブルタップがあったときにどれだけ拡大縮小するかを推測しているだけです2.2f
.7インチのタブレットでは拡大率を設定できますが、10インチには拡大しすぎます.
ダブルタップでWebViewがどれだけズームインしたかをプログラムで把握する方法はありますか? 基本的に、ズームを WebView と同期するにはキャンバスが必要です。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.scale(mScaleFactor, mScaleFactor, 0, 0);
canvas.drawPath(drawPath, drawPaint);
invalidate();
}
public class ScaleGestureListener extends SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
// Don't let the object get too small or too large.
if(Deal.on == false) {
mScaleFactor *= detector.getScaleFactor();
mScaleFactor = Math.max(1f, Math.min(mScaleFactor, 30.0f));
System.out.println("mScaleFactor: " + mScaleFactor);
}
invalidate();
return true;
}
}
public class DoubleTapListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
if (Deal.on == false) {
if (mScaleFactor > 1.0f) {
mScaleFactor = 1.0f;
}else {
mScaleFactor = 2.2f;
}
}
return true;
}
}