/ / Android OverScroller e desempenho - Android, desempenho, Android-scroll

Android OverScroller e desempenho - Android, desempenho, Android-scroll

Eu tenho usado OverScroller para implementar o scroll da minha view.

Aqui está algum código:

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

Funciona bem. Mas no dispositivo com tela Full HD (Sony xperia Z) o método onDraw liga 4 vezes. Em "Samsung Galaxy Note 2", ele chama cerca de 10 vezes. Por isso, no xperia eu vejo atrasos. O que posso fazer para melhorar o desempenho?

UPD: Aqui está o código completo http://xsnippet.org/359714

Respostas:

1 para resposta № 1

você deve substituir computeScroll () para coisas assim e não onDraw ()


-1 para resposta № 2

Você pode substituir onFinishInflate () método em sua classe View personalizada e você pode escrever código relacionado OverScroll sob este método em vez de onDraw (). Para mais detalhes Clique aqui.