/ / Android OverScroller a výkon - Android, výkon, android-rolovanie

Android OverScroller a výkon - Android, výkon, android-rolovanie

Použil som OverScroller pre implementáciu zvitku môjho pohľadu.

Tu je nejaký kód:

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

Funguje to v poriadku. Ale na zariadení s obrazovkou Full HD (Sony xperia Z) metóda onDraw volá 4 krát. V "Samsung Galaxy Note 2" volá asi 10 krát. Preto na xperia vidím zaostávanie. Čo môžem urobiť pre zlepšenie výkonu?

UPD: Tu je úplný kód http://xsnippet.org/359714

odpovede:

1 pre odpoveď č. 1

mali by ste prepísať hodnotu computeScroll () pre takéto veci a nie preDraw ()


-1 pre odpoveď č. 2

Môžete prepísať onFinishInflate () metódu vo vašej vlastnej triede View a môžete napísať súvisiaci kód OverScroll pod touto metódou namiesto OnDraw (), Podrobnejšie informácie kliknite tu.