簡體   English   中英

如何制作圓形視圖pager2?

[英]How to make a circular view pager2?

如何在 java 中制作圓形視圖 pager2(無限滾動)? 例如,我想要 go 從第 1 頁到第 100 頁,同時向左滑動而不是停止。

myViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            Log.d(CPAct,"onPageScrolled "+position);
        }

        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);
            Log.d(CPAct,"onPageSelected Position: "+position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            super.onPageScrollStateChanged(state);
            Log.d(CPAct,"onPageScrollStateChanged  state: "+state);
          
            if (state == ViewPager2.SCROLL_STATE_IDLE) {
                if (myViewPager2.getCurrentItem() == 0)
                    myViewPager2.setCurrentItem(99, false);
                else if (myViewPager2.getCurrentItem() == 99) 
                    myViewPager2.setCurrentItem(0, false);
            }

我在設置適配器后在 initView() 中嘗試了上面的代碼,但它不能正常工作。 例如,當我從第 2 頁向左滑動時,它直接轉到最后一頁並跳過第 1 頁。當我向右滑動到最后一頁並直接轉到第 1 頁時,也會發生同樣的情況。我只是想做一個無限滾動而不跳過任何頁面。

您應該發布Adapter的代碼,在那里您應該在getCount中返回Integer.MAX_VALUE並引入正確的 model 獲取繪圖列表項 - 例如,如果您有getItem ArrayList data ,則使用data.get(position % data.getItemCount())由於數組具有固定大小,但您正在通知適配器有關非常大/無限數量的項目)

您當前的方法不好,因為您正在操縱View的位置,這對於舒爾來說遲早會增加一些視覺故障,而且效率也不是很高

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM