如何将Path对象传递给新的Activity(Android)

时间:2017-04-06 20:22:25

标签: android

在我当前的活动中,我有一个用户通过用手指在屏幕上绘图而创建的Path对象。我想把这个Path对象传递给下一个活动,大概是通过一个Intent。

Intent myIntent = new Intent(activity, TrainingActivity.class);
myIntent.putExtra("image",byteArray);

/* Pass the Path to the Intent here*/

// Start new activity with this new intent
activity.startActivity(myIntent);

我尝试使用approximate()方法将路径近似为像这样的点数组

float[] pArray = path.approximate(0.5);
myIntent.putExtra("arr",pArray);

然而,android给了我错误:“无法解决方法'近似(双重)'”,并且由于某种原因我不能让它工作所以这个方法似乎是不行的。

1 个答案:

答案 0 :(得分:0)

为了以后任何人都有同样的问题,我想出的解决方案就是当有人触摸屏幕时记录x和y坐标,因为我正在构建路径。我把这些坐标放到这样的ArrayList中:

ArrayList<Float> xCoords = new ArrayList<Float>();
ArrayList<Float> yCoords = new ArrayList<Float>();

 @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Get the coordinates of the touch event
        float eventX = event.getX();
        float eventY = event.getY();

        switch (event.getAction()) {
            // When a finger touches down on the screen
            case MotionEvent.ACTION_DOWN:
                // Add the coordinates to array lists
                xCoords.add(eventX);
                yCoords.add(eventY);
                // Set a new starting point
                path.moveTo(eventX, eventY);
                return true;
            // When a finger moves around on the screen
            case MotionEvent.ACTION_MOVE:
                xCoords.add(eventX);
                yCoords.add(eventY);
                // Connect the points
                path.lineTo(eventX, eventY);
                break;
           ...
           ...
           ...

然后将组成Path的这些点传递给下一个Activity,我只需将两个数组作为额外添加到Intent并将该Intent传递给新的Activity

Intent myIntent = new Intent(activity, TrainingActivity.class);
                                myIntent.putExtra("image",byteArray);

// Add the two arrays with points
myIntent.putExtra("Xpoints",xCoords);
myIntent.putExtra("Ypoints",yCoords);

// Start new activity with this new intent
activity.startActivity(myIntent);

然后,如果你真的需要一个Path对象,只需使用这些点创建一个新的路径。