Android Webview в Viewpager с включенным аппаратным ускорением

У меня есть ViewPager, содержащий WebView. После некоторого недостатка производительности прокрутки и консультации со StackOverflow я, наконец, отключил аппаратное ускорение для WebView. Это решает проблему, но теперь мне нужно отображать видео с Youtube и другие мультимедийные материалы в моем WebView. Согласно документации, для этого мне нужно снова включить аппаратное ускорение :(
Поскольку проблема с прокруткой появляется снова, я добавил ViewPager.OnPageChangeListener() в свой ViewPager, где отключил аппаратное ускорение, когда пейджер прокручивается, и включил это, когда пейджер бездействует:

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 короткое время мерцает, что раздражает. Я понятия не имею, что я могу попробовать дальше... какие-нибудь предложения?


person KCD    schedule 18.11.2014    source источник
comment
Вы нашли обходные пути для этого?   -  person Sergii    schedule 09.03.2015
comment
Нет :( В итоге я использовал дополнительный VideoView для своих материалов.   -  person KCD    schedule 09.03.2015


Ответы (1)


Вы должны добавить веб-просмотр внутри NestedScrollView. Таким образом, я могу прокручивать любой 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>
person seyfullah.bilgin    schedule 28.05.2020