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

时间:2018-10-19 09:23:27

标签: javascript android jquery android-layout android-webview

我制作了一个Web View应用程序,其中显示了一个网站。网站上有一个侧面导航栏。当我在清单中放置hardwareAccelerated = false时,该导航将毫无问题地显示。当我将值设为true时,该导航栏将以慢速显示。 当我将清单中的false值赋给hardwareAccelerated时,我的问题就解决了,但由于此Web视图的滚动行为不正确。它会卡在某些点(抖动)上并自动向后滚动。
这种行为的可能原因是什么?

 @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 个答案:

答案 0 :(得分:1)

WebView被发现存在硬件加速问题。根据{{​​3}},您正在应用程序级别启用和禁用硬件加速。您是否尝试过仅针对特定的Webview禁用它?
可以通过

webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);  

View.isHardwareAccelerated()的结果是什么?该网站是如何制作的?是静态html / css还是使用某种js框架?例如,jquery的硬件加速问题

在注释中,您指出了Chrome上不会出现此问题,因此您可以查看android docs。可以在您的应用中设置样式和控制

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