android从Path获取x-y坐标

时间:2011-07-07 07:18:20

标签: android path

在我的应用程序中,我有一个活动,我在画布中绘制路径。我还将所有路径放入ArrayList<Path>.
在绘制之后,我只是将ArrayList<Path>发送到另一个类,以在不同的画布中绘制相同的路径。

所以不是直接使用我希望将每个路径转换为 x,y坐标的路径,而是从中我能够绘制所有路径。
我该怎么做?

我的部分代码如下,

private ArrayList<Path> _graphics = new ArrayList<Path>();
public boolean onTouchEvent(MotionEvent event) {
        synchronized (_thread.getSurfaceHolder()) {

            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                System.out.println("i'm in ACTION_DOWN ");
                path = new Path();
                path.moveTo(event.getX(), event.getY());
                path.lineTo(event.getX(), event.getY());

            //_graphics.add(path);


                path.addCircle(event.getX(), event.getY(), 2,
                        Path.Direction.CCW);

            } 
            else if (event.getAction() == MotionEvent.ACTION_MOVE) {

                System.out.println("i'm in ACTION_MOVE ");
                path.lineTo(event.getX(), event.getY());
                path.moveTo(event.getX(), event.getY());
                _graphics.add(path);

            } 
            else if (event.getAction() == MotionEvent.ACTION_UP) {

                System.out.println("i'm in ACTION_UP ");
                path.lineTo(event.getX(), event.getY());

            }

            return true;
            }
    }


    public void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
        if (onSelect == true) {
            onSelect = false;
            _graphics.clear();
        }
        for (Path path : _graphics) {
            canvas.drawPath(path, mPaint);
            }
        }

_graphicsArrayList<Path>

另一个问题我也希望将此Arraylist<path>传递给Socket,因为我必须将此路径转换为byte[]是否可以转换为byte []?

谢谢

1 个答案:

答案 0 :(得分:1)

我知道这不是你想要的,但这应该有所帮助。它将显示x和y。

package com.mike.touch;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.TextView;

public class TouchActivity extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("touch screen");
       setContentView(tv);
   }
   @Override
   public boolean onTouchEvent(MotionEvent event){
       TextView tv = new TextView(this);
       tv.setText("x="+event.getX()+"       y="+event.getY());
       setContentView(tv);

       return super.onTouchEvent(event);
   }
}