/ / Android OverScroller et la performance - Android, la performance, android-scroll

Android OverScroller et la performance - Android, la performance, android-scroll

j'ai utilisé OverScroller pour la mise en œuvre de défilement de mon point de vue.

Voici du code:

@Override
protected void onDraw(Canvas canvas) {
if (scroller.computeScrollOffset()){
int x = scroller.getCurrX();
int y = scroller.getCurrY();
scrollTo(x, y);

ViewCompat.postInvalidateOnAnimation(this);
}

super.onDraw(canvas);
}

public void open(){
scroller.startScroll(0, 0, 0, -mContent.getMeasuredHeight(), ANIMATION_TIME);
invalidate();
}

public void close(){
scroller.startScroll(0, getScrollY(), 0, mContent.getMeasuredHeight(), ANIMATION_TIME);
invalidate();
}

Ça fonctionne bien. Mais sur les appareils avec écran Full HD (Sony xperia Z), la méthode onDraw appelle 4 fois. Sur "Samsung Galaxy Note 2", il appelle environ 10 fois. Par conséquent, sur xperia, je vois des retards. Que puis-je faire pour améliorer les performances?

UPD: Voici le code complet http://xsnippet.org/359714

Réponses:

1 pour la réponse № 1

vous devriez écraser computeScroll () pour des choses comme ça et pas onDraw ()


-1 pour la réponse № 2

Vous pouvez remplacer onFinishInflate () méthode dans votre classe View personnalisée et vous pouvez écrire du code associé à OverScroll sous cette méthode au lieu de onDraw (). Pour plus de détail cliquez ici.