首先在没有动画的 ViewPager2 中滚动

First scroll in ViewPager2 without animation

我有 activity 全屏 ViewPager。问题是 - 当我第一次滚动时它非常滞后。它发生在模拟器和物理设备中。我认为那一刻适配器会膨胀其他页面,我想强制 ViewPager 或适配器在 activity 的 onCreate 上创建所有 (3) 个页面。

这是我的代码:

Activity onCreate()

adapter = new TutorialPageAdapter();
viewPager.setAdapter(adapter);
dotsIndicator.setViewPager2(viewPager);

适配器:

public class TutorialPageAdapter extends RecyclerView.Adapter<TutorialPageAdapter.TutorialItemHolder> {

    int[] items = {R.layout.tutorial_item_1_layout, R.layout.tutorial_item_2_layout, R.layout.tutorial_item_3_layout };

    @NonNull
    @Override
    public TutorialItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View layoutView = LayoutInflater.from(parent.getContext()).inflate(items[viewType], parent, false);
        return new TutorialItemHolder(layoutView);
    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }

    @Override
    public void onBindViewHolder(@NonNull TutorialItemHolder holder, int position) {
    }

    public TutorialPageAdapter() {
        notifyDataSetChanged();
    }

    @Override
    public int getItemCount() {
        return items.length;
    }

    class TutorialItemHolder extends RecyclerView.ViewHolder {

        public TutorialItemHolder(@NonNull View itemView) {
            super(itemView);
        }
    }
}

据我了解,您希望存储的片段数量 "behind the screen" 增加。您可以为此使用此代码。

 viewPager.setOffscreenPageLimit(3);

相关问题:link

只有这样activity的创作才会长