我有一个包含WebView的ViewPager。在缺乏滚动性能并咨询StackOverflow之后,我终于禁用了WebView的硬件加速。这解决了问题,但是现在我需要在WebView中显示Youtube视频和其他多媒体内容。根据文档,我需要为此重新启用硬件加速:(因为滚动问题再次出现,所以我在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会短暂闪烁,这很烦人。我不知道下一步该怎么做...任何建议?
您应该在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>