簡體   English   中英

在WebView上雙擊縮放比例縮放量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM