Android WebView:在内容加载完成后缩放到特定比例

4

如何在WebView加载内容后将内容缩放到特定比例?(我不想重新加载内容。)

我正在使用Android 2.3及更高版本。


你成功了吗? - Niko
1个回答

4

解决方案1:这里我们通过百分比设置缩放级别,这意味着当页面准备就绪时,getScale将返回5.2f:

mView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        view.setInitialScale(520);

        super.onPageStarted(view, url, favicon);
    }

解决方案2:这种方法并不完全准确,因为它将比例尺舍入为整数值:
private WebView mView;
private Handler mZoomHandler = new Handler();
private Runnable mZoomRunnable = new Runnable() {

    @Override
    public void run() {
        if ((int) mView.getScale() < WANTED_SCALE) {
            mView.zoomIn();
            mZoomHandler.postDelayed(this, 10);
        } else if ((int) mView.getScale() > WANTED_SCALE) {
            mView.zoomOut();
            mZoomHandler.postDelayed(this, 10);
        }
    }
};

mView.getSettings().setSupportZoom(true);
mView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        mZoomRunnable.run();
    }
});

谢谢,给我一些时间测试一下这是否足够满足我的需求,我会回报的。 - Hoang Huynh
1
抱歉,这个程序没有起作用。run() 函数会一直运行,因为 zoomInzoomOut 的缩放级别太大了,无法达到所需的缩放比例 WANTED_SCALE - Hoang Huynh
这在运行4.4平台的Nexus 5上运行良好。您使用哪个设备? - Niko
1
好的,无限循环可能是由于在此处对整数值进行了缩放而不是浮点数,因此它会跳到2然后返回1,如此反复。在这种情况下,您想要缩放为浮点值,但不确定是否可能。使用WebView很痛苦,因为API非常有限且隐藏,因此无法获取任何源以检查是否可以在那里调用某些私有方法。 - Niko
1
我会在今天仔细研究,看看是否有任何方法可以将其缩放为浮点值。我会在我的答案中发布我的发现。 - Niko
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接