继android计算器后的进击版 android的流行也让我们这种android的日志有了展现的价值 技术的天堂有你也有我 在这个经济利益的社会 希望我的飞蛾扑火可以让你感到一丝的温暖 让你对未来充满希望
不管未来的岁月如何变化 我只是想保持现有渴望汲取知识的状态 即使踽踽独行 我也要坚持的走下去 即使在无人注目的暗夜中 我也希望自己能够动情的燃烧着 为答谢那一段无怨无悔的岁月
/Painter3/src/com/wupic/painter/Circle.java
import android.graphics.Canvas;
public class Circle extends Shape {
public Circle(float x, float y, int color, float paintWidth) {
super(x, y, color, paintWidth);
// TODO Auto-generated constructor stub
}
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
//canvas.drawCircle(mRectangle.left,mRectangle.top, Math.min(Math.abs(mRectangle.bottom-mRectangle.top), Math.abs(mRectangle.right-mRectangle.left)), mPaint);
/*mRound.right = x;
mRound.bottom = y;*/
if (mRectangle.width() > mRectangle.height()) {
mRectangle.right = mRectangle.left + mRectangle.height();
canvas.drawOval(mRectangle, mPaint);
}
if (mRectangle.width() <= mRectangle.height()) {
mRectangle.bottom = mRectangle.top + mRectangle.width();
canvas.drawOval(mRectangle, mPaint);
}
}
}
/Painter3/src/com/wupic/painter/ColorPicker.java(这个类网上找的)
import android.app.Dialog;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader;
import android.graphics.SweepGradient;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
public class ColorPicker extends Dialog {
private final boolean debug = true;
private final String TAG = "ColorPicker";
Context context;
private String title;//标题
private int mInitialColor;//初始颜色
private OnColorChangedListener mListener;
/**
* 初始颜色黑色
* @param context
* @param title 对话框标题
* @param listener 回调
*/
public ColorPicker(Context context, String title,
OnColorChangedListener listener) {
this(context, Color.BLACK, title, listener);
}
/**
*
* @param context
* @param initialColor 初始颜色
* @param title 标题
* @param listener 回调
*/
public ColorPicker(Context context, int initialColor,
String title, OnColorChangedListener listener) {
super(context);
this.context = context;
mListener = listener;
mInitialColor = initialColor;
this.title = title;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WindowManager manager = getWindow().getWindowManager();
int height = (int) (manager.getDefaultDisplay().getHeight() * 0.9f);
int width = (int) (manager.getDefaultDisplay().getWidth() * 0.7f);
ColorPickerView myView = new ColorPickerView(context, height, width);
setContentView(myView);
setTitle(title);
}
private class ColorPickerView extends View {
private Paint mPaint;//渐变色环画笔
private Paint mCenterPaint;//中间圆画笔
private Paint mLinePaint;//分隔线画笔
private Paint mRectPaint;//渐变方块画笔
private Shader rectShader;//渐变方块渐变图像
private float rectLeft;//渐变方块左x坐标
private float rectTop;//渐变方块右x坐标
private float rectRight;//渐变方块上y坐标
private float rectBottom;//渐变方块下y坐标
private final int[] mCircleColors;//渐变色环颜色
private final int[] mRectColors;//渐变方块颜色
private int mHeight;//View高
private int mWidth;//View宽
private float r;//色环半径(paint中部)
private float centerRadius;//中心圆半径
private boolean downInCircle = true;//按在渐变环上
private boolean downInRect;//按在渐变方块上
private boolean highlightCenter;//高亮
private boolean highlightCenterLittle;//微亮
public ColorPickerView(Context context, int height, int width) {
super(context);
this.mHeight = height - 36;
this.mWidth = width;
setMinimumHeight(height - 36);
setMinimumWidth(width);
//渐变色环参数
mCircleColors = new int[] {0xFFFF0000, 0xFFFF00FF, 0xFF0000FF,
0xFF00FFFF, 0xFF00FF00,0xFFFFFF00, 0xFFFF0000};
Shader s = new SweepGradient(0, 0, mCircleColors, null);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setShader(s);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(50);
r = width / 2 * 0.7f - mPaint.getStrokeWidth() * 0.1f;
//中心圆参数
mCenterPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mCenterPaint.setColor(mInitialColor);
mCenterPaint.setStrokeWidth(5);
centerRadius = (r - mPaint.getStrokeWidth() / 2 ) * 0.7f;
//边框参数
mLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mLinePaint.setColor(Color.parseColor("#72A1D1"));
mLinePaint.setStrokeWidth(4);
//黑白渐变参数
mRectColors = new int[]{0xFF000000, mCenterPaint.getColor(), 0xFFFFFFFF};
mRectPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mRectPaint.setStrokeWidth(5);
rectLeft = -r - mPaint.getStrokeWidth() * 0.5f;
rectTop = r + mPaint.getStrokeWidth() * 0.5f +
mLinePaint.getStrokeMiter() * 0.5f + 15;
rectRight = r + mPaint.getStrokeWidth() * 0.5f;
rectBottom = rectTop + 50;
}
@Override
protected void onDraw(Canvas canvas) {
//移动中心
canvas.translate(mWidth / 2, mHeight / 2 - 50);
//画中心圆
canvas.drawCircle(0, 0, centerRadius, mCenterPaint);
//是否显示中心圆外的小圆环
if (highlightCenter || highlightCenterLittle) {
int c = mCenterPaint.getColor();
mCenterPaint.setStyle(Paint.Style.STROKE);
if(highlightCenter) {
mCenterPaint.setAlpha(0xFF);
}else if(highlightCenterLittle) {
mCenterPaint.setAlpha(0x90);
}
canvas.drawCircle(0, 0,
centerRadius + mCenterPaint.getStrokeWidth(), mCenterPaint);
mCenterPaint.setStyle(Paint.Style.FILL);
mCenterPaint.setColor(c);
}
//画色环
canvas.drawOval(new RectF(-r, -r, r, r), mPaint);
//画黑白渐变块
if(downInCircle) {
mRectColors[1] = mCenterPaint.getColor();
}
rectShader = new LinearGradient(rectLeft, 0, rectRight, 0, mRectColors, null, Shader.TileMode.MIRROR);
mRectPaint.setShader(rectShader);
canvas.drawRect(rectLeft, rectTop, rectRight, rectBottom, mRectPaint);
float offset = mLinePaint.getStrokeWidth() / 2;
canvas.drawLine(rectLeft - offset, rectTop - offset * 2,
rectLeft - offset, rectBottom + offset * 2, mLinePaint);//左
canvas.drawLine(rectLeft - offset * 2, rectTop - offset,
rectRight + offset * 2, rectTop - offset, mLinePaint);//上
canvas.drawLine(rectRight + offset, rectTop - offset * 2,
rectRight + offset, rectBottom + offset * 2, mLinePaint);//右
canvas.drawLine(rectLeft - offset * 2, rectBottom + offset,
rectRight + offset * 2, rectBottom + offset, mLinePaint);//下
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX() - mWidth / 2;
float y = event.getY() - mHeight / 2 + 50;
boolean inCircle = inColorCircle(x, y,
r + mPaint.getStrokeWidth() / 2, r - mPaint.getStrokeWidth() / 2);
boolean inCenter = inCenter(x, y, centerRadius);
boolean inRect = inRect(x, y);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downInCircle = inCircle;
downInRect = inRect;
highlightCenter = inCenter;
case MotionEvent.ACTION_MOVE:
if(downInCircle && inCircle) {//down按在渐变色环内, 且move也在渐变色环内
float angle = (float) Math.atan2(y, x);
float unit = (float) (angle / (2 * Math.PI));
if (unit < 0) {
unit += 1;
}
mCenterPaint.setColor(interpCircleColor(mCircleColors, unit));
if(debug) Log.v(TAG, "色环内, 坐标: " + x + "," + y);
}else if(downInRect && inRect) {//down在渐变方块内, 且move也在渐变方块内
mCenterPaint.setColor(interpRectColor(mRectColors, x));
}
if(debug) Log.v(TAG, "[MOVE] 高亮: " + highlightCenter + "微亮: " + highlightCenterLittle + " 中心: " + inCenter);
if((highlightCenter && inCenter) || (highlightCenterLittle && inCenter)) {//点击中心圆, 当前移动在中心圆
highlightCenter = true;
highlightCenterLittle = false;
} else if(highlightCenter || highlightCenterLittle) {//点击在中心圆, 当前移出中心圆
highlightCenter = false;
highlightCenterLittle = true;
} else {
highlightCenter = false;
highlightCenterLittle = false;
}
invalidate();
break;
case MotionEvent.ACTION_UP:
if(highlightCenter && inCenter) {//点击在中心圆, 且当前启动在中心圆
if(mListener != null) {
mListener.colorChanged(mCenterPaint.getColor());
ColorPicker.this.dismiss();
}
}
if(downInCircle) {
downInCircle = false;
}
if(downInRect) {
downInRect = false;
}
if(highlightCenter) {
highlightCenter = false;
}
if(highlightCenterLittle) {
highlightCenterLittle = false;
}
invalidate();
break;
}
return true;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(mWidth, mHeight);
}
/**
* 坐标是否在色环上
* @param x 坐标
* @param y 坐标
* @param outRadius 色环外半径
* @param inRadius 色环内半径
* @return
*/
private boolean inColorCircle(float x, float y, float outRadius, float inRadius) {
double outCircle = Math.PI * outRadius * outRadius;
double inCircle = Math.PI * inRadius * inRadius;
double fingerCircle = Math.PI * (x * x + y * y);
if(fingerCircle < outCircle && fingerCircle > inCircle) {
return true;
}else {
return false;
}
}
/**
* 坐标是否在中心圆上
* @param x 坐标
* @param y 坐标
* @param centerRadius 圆半径
* @return
*/
private boolean inCenter(float x, float y, float centerRadius) {
double centerCircle = Math.PI * centerRadius * centerRadius;
double fingerCircle = Math.PI * (x * x + y * y);
if(fingerCircle < centerCircle) {
return true;
}else {
return false;
}
}
/**
* 坐标是否在渐变色中
* @param x
* @param y
* @return
*/
private boolean inRect(float x, float y) {
if( x <= rectRight && x >=rectLeft && y <= rectBottom && y >=rectTop) {
return true;
} else {
return false;
}
}
/**
* 获取圆环上颜色
* @param colors
* @param unit
* @return
*/
private int interpCircleColor(int colors[], float unit) {
if (unit <= 0) {
return colors[0];
}
if (unit >= 1) {
return colors[colors.length - 1];
}
float p = unit * (colors.length - 1);
int i = (int)p;
p -= i;
// now p is just the fractional part [0...1) and i is the index
int c0 = colors[i];
int c1 = colors[i+1];
int a = ave(Color.alpha(c0), Color.alpha(c1), p);
int r = ave(Color.red(c0), Color.red(c1), p);
int g = ave(Color.green(c0), Color.green(c1), p);
int b = ave(Color.blue(c0), Color.blue(c1), p);
return Color.argb(a, r, g, b);
}
/**
* 获取渐变块上颜色
* @param colors
* @param x
* @return
*/
private int interpRectColor(int colors[], float x) {
int a, r, g, b, c0, c1;
float p;
if (x < 0) {
c0 = colors[0];
c1 = colors[1];
p = (x + rectRight) / rectRight;
} else {
c0 = colors[1];
c1 = colors[2];
p = x / rectRight;
}
a = ave(Color.alpha(c0), Color.alpha(c1), p);
r = ave(Color.red(c0), Color.red(c1), p);
g = ave(Color.green(c0), Color.green(c1), p);
b = ave(Color.blue(c0), Color.blue(c1), p);
return Color.argb(a, r, g, b);
}
private int ave(int s, int d, float p) {
return s + Math.round(p * (d - s));
}
}
/**
* 回调接口
* @author <a href="clarkamx@gmail.com">LynK</a>
*
* Create on 2012-1-6 上午8:21:05
*
*/
public interface OnColorChangedListener {
/**
* 回调函数
* @param color 选中的颜色
*/
void colorChanged(int color);
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getmInitialColor() {
return mInitialColor;
}
public void setmInitialColor(int mInitialColor) {
this.mInitialColor = mInitialColor;
}
public OnColorChangedListener getmListener() {
return mListener;
}
public void setmListener(OnColorChangedListener mListener) {
this.mListener = mListener;
}
}
/Painter3/src/com/wupic/painter/Curve.java
import java.util.ArrayList;
import java.util.List;
import android.graphics.Canvas;
import android.graphics.EmbossMaskFilter;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PointF;
import android.graphics.RectF;
public class Curve extends Shape {
private List<PointF> mPoints;
/** 绘制路径 */
protected Path mPath;
/**
* @param x 起点横坐标
* @param y 起点纵坐标
* @param color 笔刷颜色
* @param paintWidth 笔刷粗细
*/
public Curve(float x, float y, int color, float paintWidth) {
super(x, y, color, paintWidth);
mPoints = new ArrayList<PointF>();
PointF point = new PointF(x, y);
mPoints.add(point);
mPath = new Path();
}
@Override
public void setEndPoint(float x, float y) {
super.setEndPoint(x, y);
PointF point = new PointF(x, y);
mPoints.add(point);
}
@Override
public void draw(Canvas canvas) {
mPath.rewind();
mPath.moveTo(mPoints.get(0).x, mPoints.get(0).y);
for (PointF point : mPoints) {
mPath.lineTo(point.x, point.y);
}
canvas.drawPath(mPath, mPaint);
}
}
/Painter3/src/com/wupic/painter/Ellipse.java
import android.graphics.Canvas;
public class Ellipse extends Shape {
public Ellipse(float x, float y, int color, float paintWidth) {
super(x, y, color, paintWidth);
// TODO Auto-generated constructor stub
}
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawOval(mRectangle, mPaint);
}
}
/Painter3/src/com/wupic/painter/Erease.java
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
public class Erease extends Curve {
public Erease(float x, float y, int color, float paintWidth) {
super(x, y, color, paintWidth);
// TODO Auto-generated constructor stub
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
}
}
/Painter3/src/com/wupic/painter/PaintView.java
import java.util.Iterator;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.View;
public class PaintView extends View {
/**
* @param context
*/
Bitmap mBitmap;
Canvas mCanvas;
public PaintView(Context context) {
super(context);
}
/**
* @param context
* @param attrs
*/
public PaintView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* @param context
* @param attrs
* @param defStyle
*/
public PaintView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(mBitmap==null){
mBitmap=Bitmap.createBitmap(getMeasuredWidth(),getMeasuredHeight(),Bitmap.Config.ARGB_8888);
mCanvas=new Canvas(mBitmap);
}
mCanvas.drawColor(Color.WHITE);
Iterator<Shape> iterator = ShapeManager.getInstance().getShapesIterator();
while (iterator.hasNext()) {
Shape shape = iterator.next();
shape.draw(mCanvas);
}
canvas.drawBitmap(mBitmap, 0, 0,null);
}
}
/Painter3/src/com/wupic/painter/Rectangle.java
import android.graphics.Canvas;
public class Rectangle extends Shape {
/**
* @param x
* @param y
* @param color
* @param paintWidth
*/
public Rectangle(float x, float y, int color, float paintWidth) {
super(x, y, color, paintWidth);
}
/* (non-Javadoc)
* @see com.wupic.painter.Shape#draw(android.graphics.Canvas)
*/
@Override
public void draw(Canvas canvas) {
canvas.drawRect(mRectangle, mPaint);
}
}
/Painter3/src/com/wupic/painter/Shape.java
import android.graphics.Canvas;
import android.graphics.CornerPathEffect;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.RectF;
public abstract class Shape {
/** 图形的范围 */
protected RectF mRectangle;
/** 笔刷 */
protected Paint mPaint;
/**
* @param x 起点横坐标
* @param y 起点纵坐标
* @param color 笔刷颜色
* @param paintWidth 笔刷粗细
*/
public Shape(float x, float y, int color, float paintWidth) {
/*mRectangle = new RectF(x, y, x, y);
mPaint = new Paint();
mPaint.setColor(color);
mPaint.setStrokeWidth(paintWidth);
mPaint.setStyle(Style.STROKE);
mPaint.setAntiAlias(true);
mPaint.setPathEffect(new CornerPathEffect(10));
mPaint.getMaskFilter();*/
mRectangle = new RectF(x, y, x, y);
mPaint = new Paint();
mPaint.setColor(color);
mPaint.setStrokeWidth(paintWidth);
mPaint.setStyle(Style.STROKE);
}
/**
* 设置终点
* @param x 终点横坐标
* @param y 终点纵坐标
*/
public void setEndPoint(float x, float y) {
mRectangle.right = x;
mRectangle.bottom = y;
}
/**
* 绘制
* @param canvas 画布
*/
public abstract void draw(Canvas canvas);
}
/Painter3/src/com/wupic/painter/ShapeManager.java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 图形管理器
*/
public class ShapeManager {
private List<Shape> mShapes;
private static ShapeManager instance;
private ShapeManager(){
mShapes = new ArrayList<Shape>();
};
/**
* 获得实例方法
* @return
*/
public static ShapeManager getInstance() {
if (instance == null) {
instance = new ShapeManager();
}
return instance;
}
/**
* 获得图形list的迭代器
* @return
*/
public Iterator<Shape> getShapesIterator() {
return mShapes.iterator();
}
/**
* 增加一个图形
* @param shape
*/
public void addShape(Shape shape) {
mShapes.add(shape);
}
/**
* 清空所有图形
*/
public void clearShapes() {
mShapes.clear();
}
}
/Painter3/src/com/wupic/painter/Teragonal.java
import android.graphics.Canvas;
public class Teragonal extends Shape {
public Teragonal(float x, float y, int color, float paintWidth) {
super(x, y, color, paintWidth);
// TODO Auto-generated constructor stub
}
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
/*if(Math.abs(mRectangle.bottom-mRectangle.top)!=Math.abs(mRectangle.right-mRectangle.left))
{
int min=(int) Math.min(Math.abs(mRectangle.bottom-mRectangle.top), Math.abs(mRectangle.right-mRectangle.left));
mRectangle.bottom=mRectangle.top+min;
mRectangle.right=mRectangle.left+min;
canvas.drawRect(mRectangle, mPaint);
}*/
if (mRectangle.width() > mRectangle.height()) {
mRectangle.right = mRectangle.left + mRectangle.height();
canvas.drawRect(mRectangle, mPaint);
}
if (mRectangle.width() <= mRectangle.height()) {
mRectangle.bottom = mRectangle.top + mRectangle.width();
canvas.drawRect(mRectangle, mPaint);
}
}
}
/Painter3/src/com/wupic/painter/MainActivity.java
import android.app.Activity;
import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.EmbossMaskFilter;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
public class MainActivity extends Activity {
private Spinner mShapes;
private Spinner mColors;
private Spinner mWidths;
private Button mClearButton;
private PaintView mCanvas;
private Button btnColor;
Context context ;
/** 当前正在绘制的图形 */
private Shape mCurrentShape;
private ColorPicker dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
initView();
setupSpinners();
setupListeners();
}
/**
* 初始化界面元素
*/
private void initView() {
mShapes = (Spinner) findViewById(R.id.sp_shape);
mColors = (Spinner) findViewById(R.id.sp_color);
mWidths = (Spinner) findViewById(R.id.sp_width);
mClearButton = (Button) findViewById(R.id.btn_clear);
mCanvas = (PaintView) findViewById(R.id.pv_canvas);
btnColor=(Button)findViewById(R.id.btn_color);
mCanvas.setBackgroundColor(Color.WHITE);
}
/**
* 设置下拉框数据
*/
private void setupSpinners() {
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.shapes, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mShapes.setAdapter(adapter);
adapter = ArrayAdapter.createFromResource(this, R.array.colors, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mColors.setAdapter(adapter);
adapter = ArrayAdapter.createFromResource(this, R.array.widths, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mWidths.setAdapter(adapter);
}
/**
* 设置监听器
*/
private void setupListeners() {
mClearButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShapeManager.getInstance().clearShapes();
mCanvas.invalidate();
}
});
btnColor.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog = new ColorPicker(context, 0,
getResources().getString(R.id.btn_color),
new ColorPicker.OnColorChangedListener() {
@Override
public void colorChanged(int color) {
// TODO Auto-generated method stub
btnColor.setTextColor(color);
}
});
dialog.show();
}
});
mCanvas.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
addShape(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
mCurrentShape.setEndPoint(event.getX(), event.getY());
mCanvas.invalidate();
break;
default:
break;
}
return true;
}
});
}
/**
* 增加一个图形
* @param x
* @param y
*/
private void addShape(float x, float y) {
int color=btnColor.getCurrentTextColor();
float paintWidth = 0;
switch (mWidths.getSelectedItemPosition()) {
case 0:
paintWidth = 2f;
break;
case 1:
paintWidth = 5f;
break;
case 2:
paintWidth = 8f;
break;
default:
paintWidth = 2f;
break;
}
switch (mColors.getSelectedItemPosition()) {
case 0:
break;
case 1:
color = Color.RED;
break;
case 2:
mCurrentShape.mPaint.setMaskFilter(new BlurMaskFilter(8,BlurMaskFilter.Blur.NORMAL));
break;
case 3:
mCurrentShape.mPaint.setMaskFilter(new EmbossMaskFilter(new float[]{1,1,1},0.4f,6,3.5f));
break;
default:
color = Color.BLACK;
break;
}
switch (mShapes.getSelectedItemPosition()) {
case 0:
mCurrentShape = new Curve(x, y, color, paintWidth);
break;
case 1:
mCurrentShape = new Rectangle(x, y, color, paintWidth);
break;
case 2:
mCurrentShape=new Ellipse(x, y, color, paintWidth);
break;
case 3:
mCurrentShape=new Teragonal(x, y, color, paintWidth);
break;
case 4:
mCurrentShape=new Circle(x, y, color, paintWidth);
break;
case 5:
mCurrentShape=new Erease(x, y, color, paintWidth);
break;
default:
mCurrentShape = new Curve(x, y, color, paintWidth);
break;
}
ShapeManager.getInstance().addShape(mCurrentShape);
}
}
程序被安装在虚拟机上
小画板运行效果
色板选择自己喜欢的颜色