我想在圆圈中显示一段文字,所以我写了这段代码:
public class ArcTextView extends View {
private static final String QUOTE = "Cenral Line Is The Best Line";
private Path circle;
private Paint tPaint;
public ArcTextView(Context context) {
this(context, null);
}
public ArcTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
circle = new Path();
circle.addCircle(120, 120, 90, Path.Direction.CW);
tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
tPaint.setColor(Color.WHITE);
tPaint.setTextSize(40);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawTextOnPath(QUOTE, circle, 0, 0, tPaint);
}
}
但是,有两个问题:
- 我想从圆圈顶部开始显示文本,但做不到。我尝试更改 drawTextOnPath 中的 hOffset,但没有成功。
- 您知道如何在太长的情况下省略文本吗?
已知问题:将固定值替换为 DP。
最佳答案
有两种可能的方法来更改文本的开始位置(从顶部开始)。
- 使用动画将您的圆圈旋转
90 度
。 使用 Arc 代替
Circle
。并设置 startAngle = +/- 90 度。Path path = new Path(); path.addArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle) // sample: addArc(0, 0, 50, 50, 90, 360);
关于android - Android中圆圈内的文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704694/