-1
我对Android开发非常陌生(如昨天开始)!我正在尝试制作一个应用程序,可以绘制一个圈并移动它。我遇到了一个问题,因为使用当前代码的触摸事件导致它崩溃。下面的代码:使用Android的画布绘图
/**
* capture touch events and draw or erase circles accordingly
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int)event.getX();
int y = (int)event.getY(); // get x and y coords
int xysquared = (int)(Math.pow((x-getWidth()/2),2) + Math.pow(y-getHeight()/2,2));
int xyroot = (int)(Math.pow(xysquared, 0.5)); // calculate the euclidean distance from the coordinate to the circle center
int innerCircleRadius = Math.min(getHeight(),getWidth())/4;
int outerCircleRadius = Math.min(getHeight(),getWidth())/3;
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(xyroot >= innerCircleRadius && xyroot <= outerCircleRadius) {
drawCircles(x,y);
}
break;
case MotionEvent.ACTION_MOVE:
if(xyroot >= innerCircleRadius && xyroot <= outerCircleRadius) {
drawCircles(x,y);
}
break;
case MotionEvent.ACTION_UP:
if(xyroot >= innerCircleRadius && xyroot<= outerCircleRadius) {
}
}
return true;
}
和
/**
* draw the circle at given position w/ correct radius
* @param x xcoord of circle center
* @param y ycoord of circle center
*/
public void drawCircles(int x,int y) {
int radius;
int getDiffSquared = (int)(Math.pow((getHeight()/2-getHeight()/3),2) + Math.pow((getWidth()/2-getWidth()/3), 2));
radius = (int)Math.pow(getDiffSquared, 0.5)/2;
Path circle = new Path();
Paint circlePaint = new Paint();
circlePaint.setColor(getResources().getColor(R.color.black));
circle.addCircle(x, y, radius, Direction.CW);
mCanvas.drawPath(circle,circlePaint);
}
http://stackoverflow.com/questions/3988788/what-is-a-stack-trace-and-how-can-i-use-it-to-debug-my-application-错误 –
发布您的logcat – Ameer
我无法找到堆栈跟踪,因为当我在手机上运行应用程序时它崩溃了,所以没有为错误输出文本。 – LKK