@Override
protected void onSizeChanged(int w, int h, int oldW, int oldH) {
// use smaller dimension for calculations (depends on parent size)
int smallerDim = w > h ? h : w;
// find circle's rectangle points
int largestCenteredSquareLeft = (w - smallerDim) / 2;
int largestCenteredSquareTop = (h - smallerDim) / 2;
int largestCenteredSquareRight = largestCenteredSquareLeft + smallerDim;
int largestCenteredSquareBottom = largestCenteredSquareTop + smallerDim;
// save circle coordinates and radius in fields
mCircleCenterX = largestCenteredSquareRight / 2 + (w - largestCenteredSquareRight) / 2;
mCircleCenterY = largestCenteredSquareBottom / 2 + (h - largestCenteredSquareBottom) / 2;
mCircleRadius = smallerDim / 2 - mBorderThickness / 2 - mPadding;
if (mBorderGradientColors != null) {
mGradientShader = new SweepGradient(mCircleRadius, mCircleRadius, mBorderGradientColors, null);
}
// works well for now, should we call something else here?
super.onSizeChanged(w, h, oldW, oldH);
}
java类android.graphics.SweepGradient的实例源码
CircularSlider.java 文件源码
项目:circular-slider-android
阅读 16
收藏 0
点赞 0
评论 0
ColorPicker.java 文件源码
项目:redalert-android
阅读 20
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[]{0f, 1f, 1f};
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
ColorPicker.java 文件源码
项目:EspLight-APP
阅读 20
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
CircleProgressBar.java 文件源码
项目:ProjectX
阅读 29
收藏 0
点赞 0
评论 0
/**
* 绘制进度
*
* @param canvas 画布
*/
protected void drawProgress(Canvas canvas) {
if (mRadius == 0 || mProgressSize == 0 || mAnimatorProgress < 0)
return;
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(mProgressSize);
final float halfCircleSize = mProgressSize * 0.5f;
mRectF.set(-mRadius + halfCircleSize, -mRadius + halfCircleSize,
mRadius - halfCircleSize, mRadius - halfCircleSize);
SweepGradient sweepGradient = new SweepGradient(0, 0, mGradientColors, mGradientPositions);
mRotateMatrix.setRotate(mStartAngle, 0, 0);
sweepGradient.setLocalMatrix(mRotateMatrix);
mPaint.setShader(sweepGradient);
canvas.save();
canvas.drawArc(mRectF, mStartAngle, mAnimatorProgressAngle, false, mPaint);
canvas.restore();
}
CircleProgressBar.java 文件源码
项目:ProjectX
阅读 28
收藏 0
点赞 0
评论 0
/**
* 绘制载入
*
* @param canvas 画布
*/
protected void drawLoading(Canvas canvas) {
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(mProgressSize);
final float halfCircleSize = mProgressSize * 0.5f;
SweepGradient sweepGradient = new SweepGradient(0, 0, mGradientColors, mGradientPositions);
mRotateMatrix.setRotate(mStartAngle - mLoadingStartAngle -
mLoadingSweepAngle * mLoadingOffset, 0, 0);
sweepGradient.setLocalMatrix(mRotateMatrix);
mPaint.setShader(sweepGradient);
canvas.save();
canvas.rotate(mLoadingStartAngle);
canvas.rotate(mLoadingSweepAngle * mLoadingOffset);
canvas.drawPoint(mRadius - halfCircleSize, 0, mPaint);
canvas.restore();
}
ColorCircle.java 文件源码
项目:DMXControl-for-Android
阅读 13
收藏 0
点赞 0
评论 0
/**
* Initializes variables.
*/
void init() {
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);
mCenterPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mCenterPaint.setStrokeWidth(5);
}
ColorPicker.java 文件源码
项目:MWord
阅读 31
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
MultiColorPicker.java 文件源码
项目:MWord
阅读 19
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
ColorPicker.java 文件源码
项目:BluetoothBacon
阅读 24
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}
MultiColorPicker.java 文件源码
项目:BluetoothBacon
阅读 24
收藏 0
点赞 0
评论 0
private Bitmap createColorWheelBitmap(int width, int height) {
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
int colorCount = 12;
int colorAngleStep = 360 / 12;
int colors[] = new int[colorCount + 1];
float hsv[] = new float[] { 0f, 1f, 1f };
for (int i = 0; i < colors.length; i++) {
hsv[0] = (i * colorAngleStep + 180) % 360;
colors[i] = Color.HSVToColor(hsv);
}
colors[colorCount] = colors[0];
SweepGradient sweepGradient = new SweepGradient(width / 2, height / 2, colors, null);
RadialGradient radialGradient = new RadialGradient(width / 2, height / 2, colorWheelRadius, 0xFFFFFFFF, 0x00FFFFFF, TileMode.CLAMP);
ComposeShader composeShader = new ComposeShader(sweepGradient, radialGradient, PorterDuff.Mode.SRC_OVER);
colorWheelPaint.setShader(composeShader);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(width / 2, height / 2, colorWheelRadius, colorWheelPaint);
return bitmap;
}