Android 按时钟方向绘制曲线文本计数器,而不是按时钟方向绘制
我想按时钟顺序绘制曲线文本。到目前为止,我只到了弯道Android 按时钟方向绘制曲线文本计数器,而不是按时钟方向绘制,android,android-custom-view,Android,Android Custom View,我想按时钟顺序绘制曲线文本。到目前为止,我只到了弯道 public class TextDrawActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new TextDrawingView(this));
public class TextDrawActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new TextDrawingView(this));
}
static class TextDrawingView extends View {
private Path arc;
private RectF bounds;
private TextPaint textPaint;
public TextDrawingView(Context context) {
super(context);
arc = new Path();
bounds = new RectF();
textPaint = new TextPaint();
textPaint.setAntiAlias(true);
textPaint.setTextSize(50);
textPaint.setColor(Color.BLACK);
}
@Override public void draw(Canvas canvas) {
super.draw(canvas);
bounds.set(0f, 0f, getWidth() * 0.8f, getHeight() / 2.f);
arc.rewind(); // Clear internal structure.
arc.addArc(bounds, 45, 360);
canvas.drawTextOnPath("Lorem ipsum dolor sit amet, consectetur adipisicing elit.",
arc, 0, textPaint.getTextSize() / 2.f, textPaint);
}
}
}
使用此代码,它将如下所示:
如何按时钟顺序绘制文本计数器,使其不再颠倒?如评论中所述,可以使用负的扫掠角度来实现此效果:
@Override public void draw(final Canvas canvas) {
super.draw(canvas);
bounds.set(0f, 0f, getWidth() * 0.8f, getHeight() / 2.f);
arc.rewind(); // Clear internal structure.
arc.addArc(bounds, 135, -180);
canvas.drawTextOnPath("Lorem ipsum dolor sit amet, consectetur adipisicing elit.", arc, 0, textPaint.getTextSize() / 2.f, textPaint);
}
你需要初始化路径吗?@azizbekian我认为方向对你有帮助的addArc没有过载。在addArc
@pskink中使用负的sweepAngle
,谢谢这很简单。介意将其作为答案发布,以便我批准吗?请注意,您正在调用arc.addArc
内部draw
方法,以便它将添加、添加和添加。。。你知道我的意思吗?是的,这只是为了布雷维蒂。在我的真实代码中,我只做了一次,或者我使用了arc.rewind()
。不过我会更新的。