spock42 Posted March 4, 2013 Share Posted March 4, 2013 I can not figure out why I am getting a "The method OnDraw(Canvas) of type DrawStuffActivity.MyView must override or implement a supertype method" error, any help would be greatly appreciated import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class DrawStuffActivity extends Activity implements OnTouchListener { MyView myView; int numberOfFingers = 0; float oldX[] = new float[2], oldY[] = new float[2]; Rect rectangle = new Rect(0, 0, 100, 100); DisplayMetrics metrics = new DisplayMetrics(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myView = new MyView(this); setContentView(myView); myView.setOnTouchListener(this); getWindowManager().getDefaultDisplay().getMetrics(metrics); } @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getActionMasked() ) { case MotionEvent.ACTION_DOWN: numberOfFingers = 1; oldX[0] = event.getX(0); oldY[0] = event.getY(0); break; case MotionEvent.ACTION_POINTER_DOWN: numberOfFingers = 2; oldX[1] = event.getX(1); oldY[1] = event.getY(1); break; case MotionEvent.ACTION_MOVE: handleMove(event); break; case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_UP: numberOfFingers--; break; } view.invalidate(); return true; } float newX[] = new float[2], newY[] = new float[2]; int xChange[] = new int[2], yChange[] = new int[2]; int diffX, diffY; int newLeft = rectangle.left, newTop = rectangle.top, newRight = rectangle.right, newBottom = rectangle.bottom; void handleMove(MotionEvent event) { newX[0] = Math.round(event.getX(0) ); newY[0] = Math.round(event.getY(0) ); xChange[0] = Math.round(newX[0] - oldX[0] ); yChange[0] = Math.round(newY[0] - oldY[0] ); oldX[0] = newX[0]; oldY[0] = newY[0]; switch (numberOfFingers) { case 1: newLeft = rectangle.left + xChange[0]; newTop = rectangle.top + yChange[0]; newRight = rectangle.right + xChange[0]; newBottom = rectangle.bottom + yChange[0]; if (newLeft < 0 || newRight > metrics.widthPixels) { newLeft = rectangle.left; newRight = rectangle.right; } if (newTop > 0 || newTop > metrics.heightPixels) { newTop = rectangle.top; newBottom = rectangle.bottom; } rectangle = new Rect(newLeft, newTop, newRight, newBottom); break; case 2: newX[1] = Math.round(event.getX(1) ); newY[1] = Math.round(event.getY(1) ); diffX = Math.abs(Math.round(newX[1] - newX[0])) - Math.abs(Math.round(oldX[1] - oldX[0])); diffY = Math.abs(Math.round(newY[1] - newY[0])) - Math.abs(Math.round(oldY[1] - oldY[0])); oldX[1] = newX[1]; oldY[1] = newY[1]; newLeft = rectangle.left - diffX / 2; newTop = rectangle.top - diffY / 2; newRight = rectangle.right - diffX / 2; newBottom = rectangle.bottom - diffY / 2; rectangle = new Rect(newLeft, newTop, newRight, newBottom); break; } } class MyView extends View { Paint whitePaint = new Paint(); MyView(Context context) { super(context); whitePaint.setColor(Color.WHITE); } @Override public void OnDraw(Canvas canvas) { canvas.drawRect(rectangle, whitePaint); } } } 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.