2013-12-02 3 views
-1

Я использовал OverScroller для реализации прокрутки моего представления.Android OverScroller и производительность

Вот код:

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

Он отлично работает. Но на устройстве с экраном Full HD (Sony xperia Z) метод onDraw вызывает 4 раза. В «Samsung Galaxy Note 2» он вызывает около 10 раз. Следовательно, на xperia я вижу лаги. Что я могу сделать для повышения производительности?

UPD: Вот полный код http://xsnippet.org/359714

ответ

1

Вы должны переопределить computeScroll() для таких вещей, а не onDraw()

-1

Вы можете переопределить onFinishInflate() метода в пользовательском классе View, и вы можете написать OverScroll код, связанный при этом методе вместо OnDraw(). Для более подробной информации click here.

+0

Я уже это сделал. http://xsnippet.org/359714/ – Vetalll

Смежные вопросы