私は「OK」サークルの中央集中書きたいライトキャンバス(onDrawビュー)とテキスト私はこの見解を持っている
public class ColorPickerOvalView extends View {
private Paint paint;
private Paint centerPaint;
private Paint paintText;
private final int[] colorsArray;
private OnColorChangedListener changedListener;
private String key;
private boolean trackingCenter;
private boolean highlightCenter;
private RectF rectF;
private static final int CENTER_X = 120;
private static final int CENTER_Y = 120;
private static final int CENTER_RADIUS = 39;
private static final float PI = 3.1415926f;
public ColorPickerOvalView(Context context) {
super(context);
colorsArray = new int[]{
0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00,
0xFFFFFF00, 0xFFFF0000
};
}
public ColorPickerOvalView(Context context, AttributeSet attrs) {
super(context, attrs);
colorsArray = new int[]{
0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00,
0xFFFFFF00, 0xFFFF0000
};
}
public ColorPickerOvalView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
colorsArray = new int[]{
0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF, 0xFF00FF00,
0xFFFFFF00, 0xFFFF0000
};
}
public void init(OnColorChangedListener listener, int color, String key) {
//super(c);
changedListener = listener;
Shader shader = new SweepGradient(0, 0, colorsArray, null);
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setShader(shader);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(50);
centerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
centerPaint.setColor(color);
centerPaint.setStrokeWidth(10);
paintText = new Paint();
paintText.setColor(Color.WHITE);
this.key = key;
float raio = CENTER_X - paint.getStrokeWidth() * 0.5f;
rectF = new RectF(-raio, -raio, raio, raio);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.translate(CENTER_X, CENTER_X);
canvas.drawOval(rectF, paint);
canvas.drawCircle(0, 0, CENTER_RADIUS, centerPaint);
//write the text
canvas.drawText("OK", 0, 0, paintText);
if (trackingCenter) {
int color = centerPaint.getColor();
centerPaint.setStyle(Paint.Style.STROKE);
if (highlightCenter) {
centerPaint.setAlpha(0xFF);
} else {
centerPaint.setAlpha(0x80);
}
canvas.drawCircle(0, 0, CENTER_RADIUS + centerPaint.getStrokeWidth(), centerPaint);
centerPaint.setStyle(Paint.Style.FILL);
centerPaint.setColor(color);
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(CENTER_X * 2, CENTER_Y * 2);
}
...
}
と(カラーピッカービュー)が、私のOKが間違って滞在している(しません中央集中型)。 このテキストを正確に円の中心に置く必要があります。私はこのテキストを集中することができますどのように
?どのようにサイズを変更するのですか?
おかげ
@EmilyRでしたか? –
本当に助けられました!どうもありがとう。サイズを変更するには、次のようにしました: 'float txtSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP、20、getResources()。getDisplayMetrics()); paintText.setTextSize(txtSize); @ペリーハートマンありがとう – EmilyR
喜んで聞いてください。ペイントをよく見てみてください。それは、テキストサイズを含むあらゆる種類のものの設定をしています。 –