Aucun moyen d'ajouter une ListView de l'effet de rebond régulier de la scrollview?
Par rebond, je veux dire la bande de caoutchouc comme effet lorsque vous appuyez sur le bas de la liste.
Par les regards des choses dans le ScrollView API, vous devriez être en mesure de remplacer la onOverScrolled() méthode si vous créez une vue personnalisée qui s'étend de la ScrollView classe. Après avoir fait une rapide recherche sur Google je suis tombé sur ce lien et il semble que si c'est ce que vous essayez de le faire... je crois que cette méthode a été ajouté dans Android 2.3.1 mais vous serez limité aux appareils fonctionnant.
18
Ajouter un effet de rebond à la liste dans android
Étape 1: Créer un nouveau fichier BounceListView dans le package com.de la base.vue
publicclassBounceListViewextendsListView{privatestaticfinalint MAX_Y_OVERSCROLL_DISTANCE =200;privateContext mContext;privateint mMaxYOverscrollDistance;publicBounceListView(Context context){super(context);
mContext = context;
initBounceListView();}publicBounceListView(Context context,AttributeSet attrs){super(context, attrs);
mContext = context;
initBounceListView();}publicBounceListView(Context context,AttributeSet attrs,int defStyle){super(context, attrs, defStyle);
mContext = context;
initBounceListView();}privatevoid initBounceListView(){//get the density of the screen and do some maths with it on the max overscroll distance//variable so that you get similar behaviors no matter what the screen sizefinalDisplayMetrics metrics = mContext.getResources().getDisplayMetrics();finalfloat density = metrics.density;
mMaxYOverscrollDistance =(int)(density * MAX_Y_OVERSCROLL_DISTANCE);}@Overrideprotectedboolean overScrollBy(int deltaX,int deltaY,int scrollX,int scrollY,int scrollRangeX,int scrollRangeY,int maxOverScrollX,int maxOverScrollY,boolean isTouchEvent){//This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable mMaxYOverscrollDistance; returnsuper.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);}}
Vous avez probablement une personnalisation de l'appareil de Samsung. Il faut savoir que l'effet de rebond n'est pas le comportement par défaut de l'OS Android, c'est quelque chose introduites par Samsung (et c'est mal mis en œuvre, ils devraient ai fait la ScrollView se comportent de la même). Overscroll de soutien a été introduit dans Android 2.3, et le comportement par défaut n'est pas de rebondissement, c'est plutôt un éclat de lumière avec l'intensité est directement proportionnelle à la vitesse de défilement /"force". Et il fonctionne partout (listviews, scrollviews, webviews, etc).
En conclusion, ne vous inquiétez pas à ce sujet. Il n'y a aucun argument simple que vous pouvez passer à ScrollView à faire overscroll comme ça. Et passer par tous les ennuis de l'extension de la ScrollView classe n'est pas la peine, de l'OMI. Juste compter sur le comportement par défaut.
Si Samsung veut jouer avec leurs utilisateurs et de leur donner une incohérence de l'INTERFACE utilisateur, alors ainsi soit-il.
0
Pour ceux qui veulent mettre en œuvre l'effet de rebond sur ListView.
Howto
une façon d'ajouter cet effet est à l'aide de addHeaderView et addFooterView dans ListViewet leur rembourrage(topPadding pour la vue d'en-tête, et bottomPadding pour le pied de page vue) sont mis à 0 pour la première fois, puis nous remplacer la onTouchEventet de changer le remplissage en fonction de la distance de déplacement.
L'idée est empruntée à android-pulltorefreshpuisque l'effet de rebond sont plus simple que de le tirer à rafraîchir, de sorte que le code est plus court aussi. ^_^
Par les regards des choses dans le
ScrollView
API, vous devriez être en mesure de remplacer laonOverScrolled()
méthode si vous créez une vue personnalisée qui s'étend de laScrollView
classe. Après avoir fait une rapide recherche sur Google je suis tombé sur ce lien et il semble que si c'est ce que vous essayez de le faire... je crois que cette méthode a été ajouté dans Android 2.3.1 mais vous serez limité aux appareils fonctionnant.Ajouter un effet de rebond à la liste dans android
Étape 1: Créer un nouveau fichier BounceListView dans le package com.de la base.vue
Étape 2: À votre disposition, veuillez changer
à
J'ai trouvé la meilleure mise en œuvre de BounceListView (sous licence LGPL).
Ici, il est: https://github.com/Larphoid/android-Overscroll-ListView
Vous avez probablement une personnalisation de l'appareil de Samsung. Il faut savoir que l'effet de rebond n'est pas le comportement par défaut de l'OS Android, c'est quelque chose introduites par Samsung (et c'est mal mis en œuvre, ils devraient ai fait la
ScrollView
se comportent de la même). Overscroll de soutien a été introduit dans Android 2.3, et le comportement par défaut n'est pas de rebondissement, c'est plutôt un éclat de lumière avec l'intensité est directement proportionnelle à la vitesse de défilement /"force". Et il fonctionne partout (listviews, scrollviews, webviews, etc).En conclusion, ne vous inquiétez pas à ce sujet. Il n'y a aucun argument simple que vous pouvez passer à
ScrollView
à faire overscroll comme ça. Et passer par tous les ennuis de l'extension de laScrollView
classe n'est pas la peine, de l'OMI. Juste compter sur le comportement par défaut.Si Samsung veut jouer avec leurs utilisateurs et de leur donner une incohérence de l'INTERFACE utilisateur, alors ainsi soit-il.
Pour ceux qui veulent mettre en œuvre l'effet de rebond sur
ListView
.Howto
une façon d'ajouter cet effet est à l'aide de
addHeaderView
etaddFooterView
dansListView
et leur rembourrage(topPadding
pour la vue d'en-tête, etbottomPadding
pour le pied de page vue) sont mis à0
pour la première fois, puis nous remplacer laonTouchEvent
et de changer le remplissage en fonction de la distance de déplacement.Mise en œuvre
Exemple De Code
Notes
L'idée est empruntée à android-pulltorefreshpuisque l'effet de rebond sont plus simple que de le tirer à rafraîchir, de sorte que le code est plus court aussi. ^_^
Espère que cela va aider quelqu'un..