【问题标题】:Android OverScroller and performanceAndroid OverScroller 和性能
【发布时间】:2013-12-02 13:01:57
【问题描述】:

我使用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 次。在“Samsung Galaxy Note 2”上,它调用了大约 10 次。因此在 xperia 上我看到了滞后。我可以做些什么来提高性能?

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

【问题讨论】:

    标签: android performance android-scroll


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以在自定义 View 类中重写 onFinishInflate() 方法,并且可以在此方法下编写 OverScroll 相关代码,而不是 onDraw()。更多详情click here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-03
        • 2017-01-12
        • 2016-07-31
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 2011-05-24
        • 2023-03-23
        相关资源
        最近更新 更多