ho usato OverScroller per implementare la scroll della mia vista.
Ecco un codice:
@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();
}
Funziona bene. Ma sul dispositivo con schermo Full HD (Sony Xperia Z) il metodo suDraw chiama 4 volte. Su "Samsung Galaxy Note 2" chiama circa 10 volte. Quindi su xperia vedo dei ritardi. Cosa posso fare per migliorare le prestazioni?
UPD: Ecco il codice completo http://xsnippet.org/359714
risposte:
1 per risposta № 1dovresti sovrascrivere computeScroll () per cose del genere e non suDraw ()
-1 per risposta № 2
Puoi scavalcare onFinishInflate () metodo nella tua classe View personalizzata e puoi scrivere il codice relativo a OverScroll con questo metodo invece di OnDraw (). Per maggiori dettagli clicca qui.