android - Android中圆圈内的文字

标签 android view

我想在圆圈中显示一段文字,所以我写了这段代码:

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

screenshot

但是,有两个问题:

  1. 我想从圆圈顶部开始显示文本,但做不到。我尝试更改 drawTextOnPath 中的 hOffset,但没有成功。
  2. 您知道如何在太长的情况下省略文本吗?

已知问题:将固定值替换为 DP。

最佳答案

有两种可能的方法来更改文本的开始位置(从顶部开始)。

  1. 使用动画将您的圆圈旋转 90 度
  2. 使用 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/

相关文章:

android - Android wear 重启时我的 WearableListenerService 没有启动

android - 将可绘制文件夹从 'large' 重构为 'sw123dp'

android - 如何使用具有三种布局的 View 翻转器?

java - 如何在java appengine中将代码与html分离?

php - codeigniter:将数组从 Controller 传递到 View

android - 防止自动更新

android - 为什么我安装时所有 Activity/类(class)都显示在应用程序列表中?

android - build.gradle 警告 'avoid using + in version numbers'

sql - 强制 Oracle 数据库不实现 CTE

ios - View 渐变的背景颜色