ViewPager屏幕外的页面限制

有没有办法绕过ViewPager的正常行为及其屏幕外页限制 ? 我的ViewPager包含四个fragments ,每个fragments包含图像的ViewPager 。 我遇到的问题是在ViewPager的ViewPager ,创build了两个fragments ,这导致大约20个图像(每个片段大约10个)被同时下载/抓取。 是否可以禁用屏幕外页面限制?

我的目标是仅在selectfragment时才下载图像,或者仅在用户hover图像时下载图像。 一种方法是使用onPageSelected侦听器并设置一个标志,告诉GridViewAdapter是否允许下载图像。

我能想到的另一种HoverListener是在ImageView上设置一个HoverListener ,并只在onHover上下载图像,但是这个监听器只能在4.0及更高版本中使用。

有没有更好的方法来实现这一目标?

  • 在ViewPager的Swipe上停止Exoplayer
  • onPageScrolled()没有被调用
  • Androidasynchronous查看传呼机加载数据
  • 我如何设置viewpager片段的标签?
  • Android:ViewPager卡在视图之间
  • 不显示Viewpager初始片段中的操作项目
  • ViewPager转换的PageCurlanimation?
  • Viewpager在导航回片段时没有得到更新
  • 是否可以禁用屏幕外页面限制?

    不可以。它已经设置为可能的最小值:查看页面的每一面都有一页。 这对于使animation效果起作用是必要的 – 您可以同时看到两个片段(原始的和新的)的部分。

    我的目标是仅在select片段时才下载图像,或者仅在用户hover图像时下载图像。

    然后用占位符图像加载您的网格,并不加载实际图像,直到页面更改。

    另外请注意,“hover”意味着某种鼠标或类似的指针,这在大多数Android设备上都不会使用。

    只需将屏幕外限制设置为1即可。

     ViewPager mViewpager = (ViewPager)findView.... mViewPager.setOffscreenPageLimit(1); 

    您也可以使用Android数据绑定在xml中执行此操作:

     <android.support.v4.view.ViewPager [...] app:offscreenPageLimit="@{1}" [...] </android.support.v4.view.ViewPager> 

    处理viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()

    在里面,使用viewPager.removeViewAt(int) (即限制寻呼机只加载3个页面:当前,上一个和下一个, position + 1之前和position + 1之前删除多余的意见。

    然后,您应该在viewpager适配器中处理destroyItem ,并在销毁的视图中recycle()位图。

     @Override public void destroyItem(ViewGroup container, int position, Object object) { LinearLayout layout = (LinearLayout) object; ((ViewPager) container).removeView(layout); ImageView imgDisplay = (ImageView) layout.findViewById(R.id.quranPage); Drawable drawable = imgDisplay.getDrawable(); if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; Bitmap bitmap = bitmapDrawable.getBitmap(); if (bitmap != null) //when reading page fails, this will be null bitmap.recycle(); } } 

    我的目标是只select一个片段时下载图像

    你可以在setUserVisibleHint(boolean isVisibleToUser)中使用setUserVisibleHint(boolean isVisibleToUser)片段的callback。

    mViewPager.setOffscreenPageLimit(1); 不会给你想要的,它会加载邻居片段,如果它没有加载(这意味着它会加载2片段)。

    比方说,如果你想要加载所有的片段(4片段),那么只能使用setOffscreenPageLimit(3) ,否则避免使用setOffscreenPageLimit

    我认为你不能改变viewpager加载邻居片段的默认行为。

    为了避免下载图片而用户实际上没有滚动到片段,你可以覆盖“setUserVisibilityHint(boolean visibleToUser)”,只有当“visibleToUser”变为true时才加载图片