0

ビューのスクロールを実装するために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();
}

それは正常に動作します。ただし、フル HD 画面 (Sony Xperia Z) のデバイスでは、メソッド onDraw が 4 回呼び出されます。「Samsung Galaxy Note 2」では10回程度の通話。したがって、xperiaではラグが表示されます。パフォーマンスを向上させるために何ができますか?

UPD:ここに完全なコードがありますhttp://xsnippet.org/359714

4

2 に答える 2

2

onDraw() ではなく、そのようなものについては computeScroll() をオーバーライドする必要があります

于 2013-12-02T14:02:14.997 に答える