字體高度獲取(TextView相關介紹)

Canvas 作爲繪製文本時,使用FontMetrics對象,計算位置的座標。

它的思路和Java.awt.FontMetrics的基本相同。

 

FontMetrics對象

它以四個基本座標爲基準,分別爲:

・FontMetrics.top
・FontMetrics.ascent
・FontMetrics.descent
・FontMetrics.bottom

 

該圖片將如下

Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);   
textPaint.setTextSize( 35);   
textPaint.setColor( Color.WHITE);   
  
// FontMetrics對象   
FontMetrics fontMetrics = textPaint.getFontMetrics();   
  
String text = "abcdefghijklmnopqrstu";   
  
// 計算每一個座標   
float baseX = 0;   
float baseY = 100;   
float topY = baseY + fontMetrics.top;   
float ascentY = baseY + fontMetrics.ascent;   
float descentY = baseY + fontMetrics.descent;   
float bottomY = baseY + fontMetrics.bottom;   
  
// 繪製文本   
canvas.drawText( text, baseX, baseY, textPaint);   
  
// BaseLine描畫   
Paint baseLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);>   
baseLinePaint.setColor( Color.RED);   
canvas.drawLine(0, baseY, getWidth(), baseY, baseLinePaint);   
  
// Base描畫   
canvas.drawCircle( baseX, baseY, 5, baseLinePaint);   
  
// TopLine描畫   
Paint topLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);   
topLinePaint.setColor( Color.LTGRAY);   
canvas.drawLine(0, topY, getWidth(), topY, topLinePaint);   
  
// AscentLine描畫   
Paint ascentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);   
ascentLinePaint.setColor( Color.GREEN);   
canvas.drawLine(0, ascentY, getWidth(), ascentY, ascentLinePaint);   
  
// DescentLine描畫   
Paint descentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);   
descentLinePaint.setColor( Color.YELLOW);   
canvas.drawLine(0, descentY, getWidth(), descentY, descentLinePaint);   
  
// ButtomLine描畫   
Paint bottomLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);   
bottomLinePaint.setColor( Color.MAGENTA);   
canvas.drawLine(0, bottomY, getWidth(), bottomY, bottomLinePaint); 


發佈了25 篇原創文章 · 獲贊 11 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章