如何改进android webview中的滚动?

如何改进android webview中的滚动?,android,performance,webview,scroll,Android,Performance,Webview,Scroll,我正在将一个网站加载到android webview中,我想提高滚动性能。换句话说,我想让用户的滚动更快、更流畅。有什么想法吗? 提前感谢您是否声明要在应用程序清单中进行软件渲染(或通过设置WebView的层类型)?也许试试硬件模式 webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); 您是否声明要在应用程序的清单中进行软件呈现(或通过设置WebView的层类型)?也许试试硬件模式 webView.setLayerType(View.LAY

我正在将一个网站加载到android webview中,我想提高滚动性能。换句话说,我想让用户的滚动更快、更流畅。有什么想法吗?
提前感谢

您是否声明要在应用程序清单中进行软件渲染(或通过设置WebView的层类型)?也许试试硬件模式

webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);

您是否声明要在应用程序的清单中进行软件呈现(或通过设置WebView的层类型)?也许试试硬件模式

webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);

在将WebView嵌入HorizontalScrollView中的片段时,我还遇到了缓慢的滚动和不稳定的fling滚动,但在其他情况下似乎也会发生这种情况。经过几天的反复试验,这里有一个似乎有效的解决方案。关键部分是听众;我不相信WebView设置有那么重要。这是违反直觉的,但您必须明确告诉WebView滚动。。。看起来像是安卓的bug

WebView myWebView;
VelocityTracker mVelocityTracker;

myWebView.setOnTouchListener(new WebViewOnTouchListener());

private class WebViewOnTouchListener implements View.OnTouchListener {
    float currY = 0;
    float yVeloc = 0f;
    WebView localWebView = myWebView;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int index = event.getActionIndex();
        int action = event.getActionMasked();
        int pointerId = event.getPointerId(index);
        switch(action){
            case MotionEvent.ACTION_DOWN:
                if (mVelocityTracker == null) {

                    // Retrieve a new VelocityTracker object to watch the velocity
                    // of a motion.
                    mVelocityTracker = VelocityTracker.obtain();
                } else {

                    // Reset the velocity tracker back to its initial state.
                    mVelocityTracker.clear();
                }
                mVelocityTracker.addMovement(event);
                currY = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                mVelocityTracker.addMovement(event);
                mVelocityTracker.computeCurrentVelocity(1000);
                yVeloc = mVelocityTracker.getYVelocity(pointerId);
                float y = event.getY();
                localWebView.scrollBy(0, (int) (currY - y));
                currY = y;
                break;
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_CANCEL:
                localWebView.flingScroll(0, -(int)yVeloc);
                break;

        }
        return true;
    }

}

在将WebView嵌入HorizontalScrollView中的片段时,我还遇到了缓慢的滚动和不稳定的fling滚动,但在其他情况下似乎也会发生这种情况。经过几天的反复试验,这里有一个似乎有效的解决方案。关键部分是听众;我不相信WebView设置有那么重要。这是违反直觉的,但您必须明确告诉WebView滚动。。。看起来像是安卓的bug

WebView myWebView;
VelocityTracker mVelocityTracker;

myWebView.setOnTouchListener(new WebViewOnTouchListener());

private class WebViewOnTouchListener implements View.OnTouchListener {
    float currY = 0;
    float yVeloc = 0f;
    WebView localWebView = myWebView;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int index = event.getActionIndex();
        int action = event.getActionMasked();
        int pointerId = event.getPointerId(index);
        switch(action){
            case MotionEvent.ACTION_DOWN:
                if (mVelocityTracker == null) {

                    // Retrieve a new VelocityTracker object to watch the velocity
                    // of a motion.
                    mVelocityTracker = VelocityTracker.obtain();
                } else {

                    // Reset the velocity tracker back to its initial state.
                    mVelocityTracker.clear();
                }
                mVelocityTracker.addMovement(event);
                currY = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                mVelocityTracker.addMovement(event);
                mVelocityTracker.computeCurrentVelocity(1000);
                yVeloc = mVelocityTracker.getYVelocity(pointerId);
                float y = event.getY();
                localWebView.scrollBy(0, (int) (currY - y));
                currY = y;
                break;
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_CANCEL:
                localWebView.flingScroll(0, -(int)yVeloc);
                break;

        }
        return true;
    }

}

你能分享网站链接吗?那是不可能的对不起:(你能分享网站链接吗?那是不可能的对不起:(我试过这一个,但它没有显著提高我的性能:/也许页面中有很多js和css?没错,有很多js和css,但桌面版本工作得很好,我的意思是,如果你打开浏览器访问此页面,它工作得很好:/我试过这一个,但它没有显著提高我的性能:/也许我在那里页面中有很多js和css吗?确实有很多js和css,但是桌面版本工作得很好,我的意思是如果你打开浏览器访问这个页面,它工作得很好