2013-02-26 84 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