2013-02-26 82 views
0

我是一名android新手初学者,我想制作一个简单的程序来检测触摸坐标并画出圆圈和触摸路径,我制作了一个简单的程序,在触摸周围绘制一个圆圈并跟随但我仍然可以做到触摸的道路。当我与路径启动程序会崩溃,当我删除它工作正常路径...Canvas在android中绘制路径

public class MainActivity extends Activity { 

    float x = 0; 
    float y = 0; 
    LinearLayout layout; //declarea variabilor pentru desenarea cercului 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); //specificarea 
     layout = (LinearLayout)findViewById(R.id.layout); //gasirea id 
     layout.addView(new CustomView(MainActivity.this)); 
    } 

    public class CustomView extends View { //crearea unei mape pentru canvas 
     Bitmap mBitmap; 
     Paint paint; 
     Path path; 

     public CustomView(Context context) { 
     super(context); 
     mBitmap = Bitmap.createBitmap(640, 1024, Bitmap.Config.ARGB_8888); 
      paint = new Paint(); 
      path = new Path(); 
      paint.setColor(Color.BLUE);//culoare cercului desenat 
      paint.setStyle(Style.FILL); 
     } 

    protected void onDraw(Canvas canvas) {//desenarea cercului la atingere 
     super.onDraw(canvas); 
     canvas.drawPath(path,paint); 
     canvas.drawCircle(x, y, 25, paint); 
    } 

    public boolean onTouchEvent(MotionEvent event) { 

     int action = event.getAction(); 

     switch (action){ 
      case MotionEvent.ACTION_DOWN: 
       path.moveTo(event.getX(), event.getY()); 
       path.lineTo(event.getX(), event.getY()); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       x = event.getX(); 
       y = event.getY(); 
       path.lineTo(x, y); 
       invalidate(); 
       break; 
      case MotionEvent.ACTION_UP: 
       path.lineTo(event.getX(), event.getY()); 
       break; 
      case MotionEvent.ACTION_CANCEL: 
       break; 
      default: 
      break; 
     } 
     return true; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

} 
+0

声明'x'和'y'在哪里?你的代码会发生什么,会发生什么? – 2013-02-26 18:00:05

+0

x和y是触摸屏画的圆心,程序需要检测触摸并显示屏幕坐标,并在siwpe touch的触摸和轨迹周围绘制圆圈 – user2112285 2013-02-26 18:05:00

+0

我明白了。我问了'x'和'y'是在哪里申报的,不是它们用于什么。您需要提供有关您所面临问题的更多细节。您在运行代码时没有解释实际发生的情况。是否画了一个圆圈?触摸移动时它会移动吗?实际上,你的帖子并没有比“这是我的代码,它不工作,我该如何修复它?” – 2013-02-26 18:09:00

回答

0

您还没有初始化path。最有可能的是,你的程序崩溃了NullPointerException。尝试添加此CustomView构造函数中:

path = new Path(); 

在未来,当你发布你的Android程序崩溃,如果您发布从崩溃输出的logcat这将是最有帮助的。

+0

thx很多朋友它使应用程序工作 – user2112285 2013-02-26 20:43:28