在我当前的活动中,我有一个用户通过用手指在屏幕上绘图而创建的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给了我错误:“无法解决方法'近似(双重)'”,并且由于某种原因我不能让它工作所以这个方法似乎是不行的。
答案 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对象,只需使用这些点创建一个新的路径。