[英]Scalefactor zoom amount on WebView double tap
我正在WebView上實現畫布,並且需要根據WebView的縮放級別調整畫布比例。 結合使用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;
}
}
您可以通過擴展WebViewClient
來捕獲縮放更改
public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
setWebViewClient(new WebViewClient() {
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
currentScale = newScale;
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.