2017-06-22 29 views
0

圓我想告訴在圈內的文字,所以我寫了這個代碼:文本中的Android

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

不過,也有2個問題:

  1. 我要開始顯示圈子頂部的文本,但無法完成。我試圖改變drawTextOnPath中的hOffset,但沒有成功。
  2. 如果過長,如何省略文本,您有什麼想法嗎?

已知問題:用DP替換固定值。

+0

查詢1:變換/ 90度使用動畫旋轉圓。 – Krunal

回答

1

有兩種可能的方法來改變你的文本的開始位置(從頂部)。

  1. 使用動畫將您的圈旋轉90度。
  2. 使用圓弧 inplace of 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); 
    
+0

我剛剛嘗試過使用Arc。但是,將startAngle(設置爲0,30,-45)沒有什麼區別? – qbait