android图片按手势进行移动

正在做一个游戏,其中要用到用手滑动一个路线,手抬起后,人物图片按此路线移动过去。请大家提供点思路、、、

[url]http://www.yoooo.org/?p=58[/url] :lol:
这个非常的不错啊····
[code="java"] class CustomView1 extends View {

    private Paint paint;
    private ArrayList<POINTF> graphics = new ArrayList<POINTF>();
    private Paint lPaint;
    private Path mPath;
    private int of = 0;
    private Boolean over = false;
    private float mX, mY;
    private static final float TOUCH_TOLERANCE = 4;

    public CustomView1(Context context) {
        super(context);
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);
        paint.setStrokeJoin(Paint.Join.ROUND);
        paint.setStrokeCap(Paint.Cap.ROUND);
        paint.setStrokeWidth(65);

        lPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        lPaint.setColor(Color.BLACK);
        lPaint.setStyle(Paint.Style.STROKE);// 空心
        lPaint.setStrokeJoin(Paint.Join.ROUND);
        lPaint.setStrokeCap(Paint.Cap.ROUND);
        lPaint.setStrokeWidth(5);

        mPath = new Path();

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        float x = event.getX();
        float y = event.getY();
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            over = false;
            graphics.clear();
            of = 0;
            graphics.add(new PointF(x, y));
            touch_start(x, y);
            invalidate();
            break;
        case MotionEvent.ACTION_MOVE:
            graphics.add(new PointF(x, y));
            touch_move(x, y);
            invalidate();
            break;
        case MotionEvent.ACTION_UP:
            over = true;
            touch_up();
            invalidate();
            break;
        }

        return true;
    }

    private void touch_start(float x, float y) {
        mPath.reset();
        mPath.moveTo(x, y);
        mX = x;
        mY = y;
    }

    private void touch_move(float x, float y) {
        float dx = Math.abs(x - mX);
        float dy = Math.abs(y - mY);
        if (dx &gt;= TOUCH_TOLERANCE || dy &gt;= TOUCH_TOLERANCE) {
            mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
            mX = x;
            mY = y;
        }
    }

    private void touch_up() {
        mPath.lineTo(mX, mY);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // canvas.drawColor(Color.TRANSPARENT,Mode.CLEAR);
        canvas.drawColor(Color.WHITE);// 清理
        canvas.drawPath(mPath, lPaint);
        if (over &amp;&amp; graphics.size() &gt; 0) {
            canvas.drawPoint(graphics.get(of).x, graphics.get(of).y, paint);
            of += 1;
            if (of &lt; graphics.size()) {
                if (of == graphics.size() - 1) {
                    mPath.reset();// 移动完成后移除线条
                }
                invalidate();
            }
        }
    }
    }[/code]

提供你一个思路。

用一个数组保存手势经过的x,y(began和move事件),当手抬起来后(end),再让精灵图片的坐标按照数组里的值依次改变即可