Limite de page hors fenêtre de ViewPager

Existe-t-il un moyen de contourner le comportement normal de ViewPager et sa limite de page hors écran ? Mon ViewPager contient quatre fragments , chacun contenant une vue en gridview des images. Le problème que je pose est que, lors de l' ViewPager du ViewPager , deux fragments sont créés, ce qui se traduit par l'émission d'une vingtaine d'images (environ 10 par fragment). Est-il possible de désactiver la limite de la page hors écran?

Mon objectif est de ne télécharger que des images lorsqu'un fragment est sélectionné, ou seulement lorsque l'utilisateur plante l'image. Une façon d'y parvenir est d'utiliser l'auditeur onPageSelected et de définir un drapeau qui indique à GridViewAdapter s'il est autorisé à télécharger l'image ou non.

  • Comment ajouter de la flou dans le projet studio android?
  • Sélection du texte de la visualisation Web sans effacer
  • Comment utiliser les paramètres avec HttpPost
  • Les types primitifs sont-ils collectés dans Android?
  • Comment lire le contenu du message d'un nouveau message dans Android?
  • Obtenir toutes les chaînes définies dans un apk
  • Une deuxième façon dont je peux penser est de configurer un HoverListener sur HoverListener , et de télécharger l'image sur onHover , mais cet auditeur n'est disponible qu'en 4.0 et plus tard.

    Existe-t-il une meilleure façon d'y parvenir?

  • Eclipse avec Android SDK éléments de menu manquants
  • EditText dans Listview perd son focus lorsque vous appuyez sur Android 4.x
  • Android Eclipse - Impossible de trouver * .apk
  • Positionner la vidéo à l'intérieur d'une vidéo
  • Android ouvrir et enregistrer des fichiers vers / depuis Google Drive SDK
  • Android EditText maxLength permet à l'utilisateur de taper plus
  • 6 Solutions collect form web for “Limite de page hors fenêtre de ViewPager”

    Est-il possible de désactiver la limite de la page hors écran?

    Non. Il est déjà défini sur la valeur minimale possible: une page de chaque côté de la page affichée. Ceci est nécessaire pour que les effets d'animation fonctionnent – vous voyez des parties de deux fragments (original et nouveau) en même temps.

    Mon objectif est de ne télécharger que des images lorsqu'un fragment est sélectionné, ou seulement lorsque l'utilisateur plante l'image.

    Ensuite, chargez votre grille avec des images placeholder et ne chargez pas les images réelles jusqu'à ce que la page soit modifiée.

    Aussi, notez que "hover" implique une sorte de souris ou un autre type de pointeur, qui n'est pas utilisé sur la plupart des appareils Android.

    Il suffit de définir la limite hors écran à un.

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

    Gérer viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()

    À l'intérieur, retirez les vues supplémentaires après la position + 1 et avant la position - 1 utilisant viewPager.removeViewAt(int) (c.-à-d. Limiter le pager pour avoir seulement 3 pages chargées: courant, précédent et suivant.

    Ensuite, vous devez gérer destroyItem dans l'adaptateur viewpager, recycle() les bitmaps dans la vue détruite.

     @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(); } } 

    Vous pouvez également le faire en xml en utilisant la liaison de données Android:

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

    Mon objectif est de ne télécharger que des images lorsqu'un fragment est sélectionné

    Vous pouvez utiliser le setUserVisibleHint(boolean isVisibleToUser) du Fragment dans votre ViewPager.

    mViewPager.setOffscreenPageLimit(1); Ne donnera pas ce que vous voulez, il va charger un fragment voisin s'il ne le charge pas déjà (cela signifie qu'il va charger un fragment 2).

    Disons si vous souhaitez charger tout votre fragment (fragment 4) à la fois, utilisez uniquement setOffscreenPageLimit(3) , sinon utilisez la fonction setOffscreenPageLimit .

    Je pense que vous ne pouvez pas modifier le comportement par défaut du fragment de chargement du voisin de visualisation.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.