添加hardwareAccelerated为false时,Web视图滚动问题

3

我制作了一个网页视图应用程序,其中显示了一个网站。网站上有一个侧边导航栏。当我在清单中设置hardwareAccelerated=false时,导航栏可以正常显示。当我设置为true时,导航栏以缓慢的速度显示。 我的问题是当我在清单中将hardwareAccelerated设置为false时,问题得到解决,但由于这个原因,网页视图滚动行为不正确。它会在某些点上卡住(抖动),并自动向后滚动。
这种行为可能的原因是什么?

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    WebView webView=findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setUseWideViewPort(true);
    ///CookieManager.getInstance().setCookie("https://helpers.ie/dashboard", "ci_session=ih5amh1qp52puqnqhv8a55iqnh005mqg");
    webView.loadUrl("https://helpers.ie/dashboard");

    webView.setWebViewClient(new WebViewClient() {
        @SuppressWarnings("deprecation")
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

        }
        @TargetApi(android.os.Build.VERSION_CODES.M)
        @Override
        public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
            // Redirect to deprecated method, so you can use it in all SDK versions
            onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
        }
    });
}
1个回答

2

WebView被指出存在硬件加速的问题。根据安卓文档,你可以在应用程序级别上启用或禁用硬件加速。你尝试过只为特定的WebView禁用它吗?
操作步骤如下:

webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);  

View.isHardwareAccelerated()的结果是什么?这个网站是如何制作的?是静态的HTML/CSS还是使用了某种JS框架?例如,jQuery在硬件加速方面存在问题。

在评论中,您指出这个问题在Chrome上并不会发生,所以您可以查看Chrome自定义选项卡。这可以在您的应用程序中进行样式和控制。

String url = ¨https://paul.kinlan.me/¨;
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));

我的网站有一个侧边栏菜单。 - Asad Yasin
当我启用硬件加速时,侧边菜单显示缓慢,但滚动正常,但当我禁用硬件加速时,侧边菜单平稳显示,但滚动出现问题。 - Asad Yasin
你尝试过在你的Webview中放置另一个带有侧边栏的网站,看看是否存在相同的问题吗? - Karan Harsh Wardhan
不过那个网站在iOS应用上运行得非常好。我也制作了该网站的iOS应用程序。 - Asad Yasin
你的网站使用了大量JS(和jQuery),这在Android上存在硬件加速问题。希望有其他人能够回答你的问题。 - Karan Harsh Wardhan
显示剩余6条评论

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