mPath.moveTo(x, y); this.mX = x; this.mY = y; } @Override public void fingerMove(float x, float y, Canvas canvas) { float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2); mX = x; mY = y; } this.draw(canvas); } @Override public void fingerUp(float x, float y, Canvas canvas) { mPath.lineTo(mX, mY); this.draw(canvas); mPath.reset(); } }
6. package org.vhow.paintpad.drawings;
import org.vhow.paintpad.tools.Brush;
import android.graphics.Canvas; import android.graphics.RectF;
public class Oval extends Drawing { RectF rectF = null; public Oval() { rectF = new RectF(); } @Override
- 11 -
public void draw(Canvas canvas) { rectF.left = this.startX; rectF.right = this.stopX; rectF.top = this.startY; rectF.bottom = this.stopY; canvas.drawOval(rectF, Brush.getPen()); } }
7. package org.vhow.paintpad.drawings;
import org.vhow.paintpad.tools.Brush;
import android.graphics.Canvas; import android.graphics.Path; /**
* Track the finger's movement on the screen. */
public class PathLine extends Drawing { Path mPath = null; private float mX, mY; private static final float TOUCH_TOLERANCE = 4; public PathLine() { mPath = new Path(); } @Override public void draw(Canvas canvas) { canvas.drawPath(this.mPath, Brush.getPen()); } @Override public void fingerDown(float x, float y, Canvas canvas) { mPath.reset(); mPath.moveTo(x, y); this.mX = x; this.mY = y;
- 12 -
} @Override public void fingerMove(float x, float y, Canvas canvas) { float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2); mX = x; mY = y; } this.draw(canvas); } @Override public void fingerUp(float x, float y, Canvas canvas) { mPath.lineTo(mX, mY); this.draw(canvas); mPath.reset(); } }
8. package org.vhow.paintpad.drawings;
import org.vhow.paintpad.tools.Brush;
import android.graphics.Canvas; import android.graphics.Paint; /**
* Some points. */
public class Points extends Drawing { Paint pen; public Points() { pen = new Paint(Brush.getPen()); pen.setStyle(Paint.Style.FILL); }
- 13 -
@Override public void draw(Canvas canvas) { canvas.drawCircle(stopX, stopY, Brush.getPen().getStrokeWidth() + 1, pen); } @Override public void fingerDown(float x, float y, Canvas canvas) { canvas.drawCircle(x, y, Brush.getPen().getStrokeWidth() + 1, pen); } @Override public void fingerMove(float x, float y, Canvas canvas) { canvas.drawCircle(x, y, Brush.getPen().getStrokeWidth() + 1, pen); } }
9. package org.vhow.paintpad.drawings;
import org.vhow.paintpad.tools.Brush;
import android.graphics.Canvas; /**
* A rectangle. */
public class Rect extends Drawing { @Override public void draw(Canvas canvas) { canvas.drawRect(this.startX, this.startY, this.stopX, this.stopY, Brush.getPen()); } }
10. package org.vhow.paintpad.drawings;
import org.vhow.paintpad.tools.Brush;
import android.graphics.Canvas;
- 14 -
/**
* A straight line. */
public class StraightLine extends Drawing { @Override public void draw(Canvas canvas) { canvas.drawLine(this.startX, this.startY, this.stopX, this.stopY, Brush.getPen()); } }
4.2主要代码:
1. package org.vhow.paintpad.setting;
import java.text.SimpleDateFormat; import java.util.zip.ZipEntry; import java.util.zip.ZipFile;
import org.vhow.paintpad.R;
import org.vhow.paintpad.helper.ColorPickerDialog; import org.vhow.paintpad.tools.Brush;
import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle;
import android.preference.CheckBoxPreference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; /**
* When the user select \ * implements OnPreferenceClickListener interface, when the user click * Preference the onPreferenceClick() will be called. */
public class SettingsActivity extends PreferenceActivity implements OnPreferenceClickListener, ColorPickerDialog.OnColorChangedListener { SharedPreferences prefs = null; Preference pen_width = null;
- 15 -