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;
}
}
聲明'x'和'y'在哪裏?你的代碼會發生什麼,會發生什麼? – 2013-02-26 18:00:05
x和y是觸摸屏畫的圓心,程序需要檢測觸摸並顯示屏幕座標,並在siwpe touch的觸摸和軌跡周圍繪製圓圈 – user2112285 2013-02-26 18:05:00
我明白了。我問了'x'和'y'是在哪裏申報的,不是它們用於什麼。您需要提供有關您所面臨問題的更多細節。您在運行代碼時沒有解釋實際發生的情況。是否畫了一個圓圈?觸摸移動時它會移動嗎?實際上,你的帖子並沒有比「這是我的代碼,它不工作,我該如何修復它?」 – 2013-02-26 18:09:00