I have two Classes (Draw and DrawView) I'm trying to get the buttons to function. The buttons need to change stroke color, change stroke width, undo redo, erase and etc... I can see the buttons in emulator but cannot get them to function.
Someone please help..this is diving me crazy...I'm fairly new to android app development. Here is what I have... package com.example; import android.app.Activity; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.view.Gravity; import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnClickListener; import android.widget.Toast; public class Draw extends Activity implements OnClickListener { DrawView drawView; private Paint currentPaint = new Paint(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); drawView = new DrawView(this, null); // Set full screen view hiding the status bar getWindow().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // Shows the title requestWindowFeature(Window.FEATURE_NO_TITLE); //uses the main.xml layout setContentView(R.layout.main); } @Override public void onClick(View view) { //super.onClick(view); switch (view.getId()) { case R.id.blackbutton: showToastMessage("Color Black"); // message when button is clicked currentPaint = new Paint(); currentPaint.setAntiAlias(true); currentPaint.setColor(Color.RED); currentPaint.setStyle(Paint.Style.STROKE); currentPaint.setStrokeJoin(Paint.Join.ROUND); currentPaint.setStrokeCap(Paint.Cap.ROUND); // round stroke ends on start and stop currentPaint.setStrokeWidth(5); break; case R.id.redbutton: showToastMessage("Color Red"); break; case R.id.greenbutton: showToastMessage("Color Green"); break; case R.id.bluebutton: showToastMessage("Color Blue"); break; case R.id.undobutton: showToastMessage("Undo"); break; case R.id.erasebutton: showToastMessage("Eraser"); break; case R.id.clearbutton: showToastMessage("Screen Cleared"); setContentView(R.layout.main); break; } } private void showToastMessage(String msg){ Toast toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP|Gravity.TOP, 0, 50); toast.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; } } -------------------------------------------------------------------------------------------------------------------------------------------- \ // DrawView is a view. It listens to mouse click events and draws a point at the point that it was clicked on. package com.example; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class DrawView extends View { private Paint currentPaint = new Paint(); private Path path = new Path(); /** * Optimizes painting by invalidating the smallest possible area. */ private float lastTouchX; private float lastTouchY; private final RectF dirtyRect = new RectF(); public DrawView(Context context, AttributeSet attrs) { super(context, attrs); currentPaint.setAntiAlias(true); currentPaint.setColor(Color.MAGENTA); currentPaint.setStyle(Paint.Style.STROKE); currentPaint.setStrokeJoin(Paint.Join.ROUND); currentPaint.setStrokeCap(Paint.Cap.ROUND); currentPaint.setStrokeWidth(5); setBackgroundColor(Color.WHITE); } @Override protected void onDraw(Canvas canvas) { canvas.drawPath(path, currentPaint); } @Override public boolean onTouchEvent(MotionEvent event) { float eventX = event.getX(); float eventY = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: path.moveTo(eventX, eventY); setLastTouchX(eventX); setLastTouchY(eventY); // There is no end point yet, so don't waste cycles invalidating. return true; case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: // Start tracking the dirty region. resetDirtyRect(eventX, eventY); // When the hardware tracks events faster than they are delivered, the // event will contain a history of those skipped points. int historySize = event.getHistorySize(); for (int i = 0; i < historySize; i++) { float historicalX = event.getHistoricalX(i); float historicalY = event.getHistoricalY(i); expandDirtyRect(historicalX, historicalY); path.lineTo(historicalX, historicalY); } // After replaying history, connect the line to the touch point. path.lineTo(eventX, eventY); break; default: debug("Ignored touch event: " + event.toString()); return false; } // Schedules a repaint. invalidate(); return true; } private void debug(String string) { // TODO Auto-generated method stub } private void expandDirtyRect(float historicalX, float historicalY) { // TODO Auto-generated method stub } private void resetDirtyRect(float eventX, float eventY) { // TODO Auto-generated method stub } public void setLastTouchX(float lastTouchX) { this.lastTouchX = lastTouchX; } public float getLastTouchX() { return lastTouchX; } public void setLastTouchY(float lastTouchY) { this.lastTouchY = lastTouchY; } public float getLastTouchY() { return lastTouchY; } public RectF getDirtyRect() { return dirtyRect; } } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en