Android OverScroller and performance



我使用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();
}

它运行良好。但在配备全高清屏幕的设备(索尼xperia Z)上,onDraw方法调用了4次。在"三星Galaxy Note 2"上,它会呼叫大约10次。因此,在xperia上我看到了滞后。我能做些什么来提高性能?

UPD:这是完整的代码http://xsnippet.org/359714

您应该为类似的事情覆盖computeScroll(),而不是onDraw()

您可以在自定义View类中重写onFinishInflate()方法,并且您可以在该方法下而不是onDraw()下编写OverScroll相关代码。有关更多详细信息,请单击此处。

相关内容

  • 没有找到相关文章

最新更新