Webview 如何在viewpager中使用网络视图平滑翻转

Webview 如何在viewpager中使用网络视图平滑翻转,webview,scroll,android-viewpager,Webview,Scroll,Android Viewpager,我有许多Web视图要在viewpager中显示。每当我拖动Web视图时,都会执行invidate()来重画。如果Web视图非常复杂,则重画需要很长时间,因此滚动不平滑。我曾尝试在Web视图中使用setDrawingCacheEnabled(true),但效果不佳。有人有想法吗? 非常感谢 一个想法是研究如何使用PageChangeListener来检测聚焦的视图,以及用户是否正在拖动视图 PageChangeListener中有一个方法重写,如下所示。您可以打开滚动状态来设置一个属性,让您知道何

我有许多Web视图要在viewpager中显示。每当我拖动Web视图时,都会执行invidate()来重画。如果Web视图非常复杂,则重画需要很长时间,因此滚动不平滑。我曾尝试在Web视图中使用setDrawingCacheEnabled(true),但效果不佳。有人有想法吗?
非常感谢

一个想法是研究如何使用PageChangeListener来检测聚焦的视图,以及用户是否正在拖动视图

PageChangeListener中有一个方法重写,如下所示。您可以打开滚动状态来设置一个属性,让您知道何时可以重新绘制/实例化视图,何时不可以

/**
 * Called when the scroll state changes. Useful for discovering when the user
 * begins dragging, when the pager is automatically settling to the current page,
 * or when it is fully stopped/idle.
 *
 * @param state The new scroll state.
 * @see ViewPager#SCROLL_STATE_IDLE
 * @see ViewPager#SCROLL_STATE_DRAGGING
 * @see ViewPager#SCROLL_STATE_SETTLING
 */
@Override
public void onPageScrollStateChanged(int state) {
    switch (state) {
    case ViewPager.SCROLL_STATE_IDLE:
        // Allow updating of views by view adapter
        this.isAnimating = false;
        break;
        /**
         * Indicates that the pager is currently being dragged by the user
         */
    case ViewPager.SCROLL_STATE_DRAGGING:
        // do not allow updating of views
        this.isAnimating = true;
        break;
        /**
         * Indicates that the pager is in the process of settling to a final position.
         */
    case ViewPager.SCROLL_STATE_SETTLING:
        this.isAnimating = true;
        break;
    }
}
将pagechangelistener添加到viewpager很容易

pageChangeListener = new PageChangeListener(viewIndicator, viewAdapter);
viewPager.setOnPageChangeListener(pageChangeListener);
接下来,我将研究如何使用webview来防止在用户主动滚动时重新绘制。 我想到的一个想法是在web视图中覆盖invalidate,并且只有当用户没有滚动并且视图处于空闲状态时才使其失效