Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android绘制路径未从我在AVD中单击的位置开始_Java_Android - Fatal编程技术网

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();

我试过我也遇到同样的问题