1

タッチ イベントをリッスンし、タッチするたびに円を描くビューを作成しました。現在、タッチの垂直位置のみを追跡します。

興味深いコード部分があります:

onTouchEvent:

public boolean onTouchEvent(MotionEvent event) {

    int actionType = event.getAction();
    if (actionType == MotionEvent.ACTION_MOVE || actionType == MotionEvent.ACTION_DOWN ) {

        int px = getMeasuredWidth() / 2;
        int py = getMeasuredHeight() / 2;

        touchY = (event.getY() - py);

        if (touchY < 25 && touchY > -25) {
            touchY = 0;
        }
        invalidate();
    }
    return true;
}

また、onDraw:

@Override
protected void onDraw(Canvas canvas) {
    int px = getMeasuredWidth() / 2;
    int py = getMeasuredHeight() / 2;
    int radius = px - innerPadding;

    canvas.drawCircle(px, touchY+py, radius - innerPadding, circlePaint);
    canvas.save();
}

動作しますが、Galaxy S3 を使用していることを考えると、指に続く円が非常に遅いことがわかりました。スムーズですが、遅延があります。

これをより適切に実装する方法について何かアドバイスはありますか?

ありがとうございました。

4

0 に答える 0