Viewpager中的Android Webview,启用了硬件加速

时间:2014-11-18 10:14:44

标签: android webview android-viewpager hardware-acceleration

我有一个包含WebView的ViewPager。在一些缺乏滚动性能和咨询StackOverflow之后,我终于禁用了WebView的硬件加速。这解决了这个问题,但现在我需要在WebView中显示Youtube视频和其他多媒体内容。根据dokumentation,我需要为此重新启用硬件加速:(
因为滚动问题再次出现,我在ViewPager中添加了一个ViewPager.OnPageChangeListener(),当寻呼机滚动时我禁用硬件加速,当寻呼机空闲时启用它:

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageScrollStateChanged(int arg0) {
                if(arg0 == ViewPager.SCROLL_STATE_IDLE){

                    webview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
                }
                else{
                    // disable hardware acceleration
                    webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
                }
            }
        });

它似乎有点工作,但是当启用硬件加速时,WebView会闪烁很短的时间,这很烦人。我不知道我接下来可以尝试什么...任何sugestions?

1 个答案:

答案 0 :(得分:0)

您应该在NestedScrollView内添加webview。这样,我可以在Webview中滚动任何html内容(例如youtube视频),而不会缺乏滚动性能。

  <androidx.core.widget.NestedScrollView
        android:id="@+id/constraintLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </androidx.core.widget.NestedScrollView>