canvas教程

优秀范文十篇 www.fanwen99.cn(5)

字号+ 作者:H5之家 来源:H5之家 2017-07-21 14:05 我要评论( )

mColors = new int[] { 0xFFFF0000, 0xFFFF00FF, 0xFF0000FF,0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000 }; Shader s = new SweepGradient(0, 0, mColors, null); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG)

mColors = new int[] { 0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000 }; Shader s = new SweepGradient(0, 0, mColors, null); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

mPaint.setShader(s);

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setStrokeWidth(32);

mCenterPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mCenterPaint.setColor(color);

mCenterPaint.setStrokeWidth(5);

}

private boolean mTrackingCenter;

private boolean mHighlightCenter;

@Override

protected void onDraw(Canvas canvas)

{

float r = CENTER_X - mPaint.getStrokeWidth() * 0.5f; canvas.translate(CENTER_X, CENTER_X);

canvas.drawOval(new RectF(-r, -r, r, r), mPaint);

canvas.drawCircle(0, 0, CENTER_RADIUS, mCenterPaint); if (mTrackingCenter)

{

int c = mCenterPaint.getColor();

mCenterPaint.setStyle(Paint.Style.STROKE);

if (mHighlightCenter)

{

mCenterPaint.setAlpha(0xFF);

}

else

{

mCenterPaint.setAlpha软件开发毕业设计范文(0x80);

}

canvas.drawCircle(0, 0, CENTER_RADIUS

+ mCenterPaint.getStrokeWidth(),

mCenterPaint);

mCenterPaint.setStyle(Paint.Style.FILL);

mCenterPaint.setColor(c);

}

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

{

setMeasuredDimension(CENTER_X * 2, CENTER_Y * 2); }

private static final int CENTER_X = 100;

private static final int CENTER_Y = 100;

private static final int CENTER_RADIUS = 32;

private int ave(int s, int d, float p)

{

return s + java.lang.Math.round(p * (d - s));

}

private int interpColor(int colors[], float unit)

{

if (unit

{

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);

}

private static final float PI = 3.1415926f;

@Override

public boolean onTouchEvent(MotionEvent event)

{

float x = event.getX() - CENTER_X;

float y = event.getY() - CENTER_Y;

boolean inCenter = java.lang.Math.sqrt(x * x + y * y)

switch (event.getAction())

{

case MotionEvent.ACTION_DOWN:

mTrackingCenter = inCenter;

if (inCenter)

{

mHighlightCenter = true;

invalidate();

break;

}

case MotionEvent.ACTION_MOVE:

if (mTrackingCenter)

{

if (mHighlightCenter != inCenter)

{

mHighlightCenter = inCenter;

invalidate();

}

}

else

{

float angle = (float) java.lang.Math.atan2(y, x);

// need to turn angle [-PI ... PI] into unit

[0....1]

float unit = angle / (2 * PI);

if (unit

{

unit += 1;

}

mCenterPaint.setColor(interpColor(mColors,

unit));

invalidate();

}

break;

case MotionEvent.ACTION_UP:

if (mTrackingCenter)

{

if (inCenter)

{

mListener.colorChanged(mCenterPaint.getColor());

}

mTrackingCenter = false; // so we draw invalidate();

}

break;

}

return true;

}

}

public ColorPickerDialog(Context context,

OnColorChangedListener listener,

int initialColor, String str)

{

super(context);

mListener = listener;

mInitialColor = initialColor;

title = str;

}

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

OnColorChangedListener l = new OnColorChangedListener() {

public void colorChanged(int color)

{

mListener.colorChanged(color);

dismiss();

}

};

setContentView(new ColorPickerView(getContext(), l, mInitialColor));

setTitle(title);

}

}

图7,打开设置中的颜色选项

第五章 软件测试

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 设计师毕业实习报告范文3篇

    设计师毕业实习报告范文3篇

    2017-03-27 15:00

  • PS抠图神器:KnockOut 2.0汉化版下载及教程

    PS抠图神器:KnockOut 2.0汉化版下载及教程

    2017-02-15 18:01

  • 动漫专业大学生实习报告范文

    动漫专业大学生实习报告范文

    2016-07-13 13:00

  • 体验未来:10个会让你惊叹不已的HTML5画布(canvas)技术应用演示

    体验未来:10个会让你惊叹不已的HTML5画布(canvas)技术应用演示

    2016-05-08 13:00

网友点评