Java Android绘制路径未从我在AVD中单击的位置开始
我正在制作一个基本的应用程序来测试制作路径 所以我得到了工作的路径,但是当我在模拟器中开始一条路径时,它会从我点击的地方开始一英寸以下的路径 除了从一英寸以下的路径,它将跟随我的鼠标,并作出一个路径,但总是从一英寸以下的地方鼠标 这是我的代码:Java Android绘制路径未从我在AVD中单击的位置开始,java,android,Java,Android,我正在制作一个基本的应用程序来测试制作路径 所以我得到了工作的路径,但是当我在模拟器中开始一条路径时,它会从我点击的地方开始一英寸以下的路径 除了从一英寸以下的路径,它将跟随我的鼠标,并作出一个路径,但总是从一英寸以下的地方鼠标 这是我的代码: public class Paths extends Activity { Path newPath = new Path(); Paint paint = new Paint(); Canvas canvas = new Canvas(); @Ov
public class Paths extends Activity {
Path newPath = new Path();
Paint paint = new Paint();
Canvas canvas = new Canvas();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_paths);
}
public boolean onTouchEvent(MotionEvent event) {
LinearLayout relative = (LinearLayout) findViewById(R.id.drawing_view2);
float x = event.getRawX();
float y = event.getRawY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
newPath.moveTo(x, y);
relative.addView(new DrawView2(relative.getContext(), newPath));
return true;
case MotionEvent.ACTION_MOVE:
newPath.lineTo(x, y);
break;
case MotionEvent.ACTION_UP:
default:
return false;
}
relative.invalidate();
return true;
}
这是处理绘画和画布对象的java类
private final Path path;
private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
public DrawView2(Context context, Path path) {
super(context);
int mycolor = Color.parseColor("#6633CC");
paint.setAntiAlias(true);
paint.setDither(true);
paint.setColor(mycolor);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(8f);
this.path = path;
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path, paint);
}
和我的布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawing_view2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#33FF99"
您正在获取坐标
float x = event.getRawX();
float y = event.getRawY();
与其这样,不如试试:
float x = event.getX();
float y = event.getY();
我试过我也遇到同样的问题