android 文字尺寸(寬高)的測量

來源:互聯網
上載者:User

標籤:android   自訂view 測量文字尺寸   

FontMetrics

可以測量高度

關於FontMetrics的幾個重要屬性的解析
 
1.ascent
2.descent
3.top
4.bottom
5.leading
6.baseline 理解這個是重點 可以理解為是X軸
 
注意 android 座標系的特點 Y軸 向下是正方向 向上是負方向
 
關於 baseline 的確定 在自訂 view 的時候 
通過 drawText 這個方法 將 文字 繪製到介面 
其中 這個方法的 第二個 和 第三個 參數就決定了baseline的位置
 

理解這幾個參數最好的方式就是通過英語的 四線格 那個。

 

通過實際的測量發現其實這幾個屬性 之間的關係其實是固定的 與具體的書寫內容沒有關係 與字型大小有關係 (針對英文)

 

baseline 的位置 相當於 四線中 第三條線

ascent 的位置相當於 四線中 有 f 的時候 他是固定在 f 的最上方

descent 的位置 相當於 四線中 有 g 的時候 他是固定在 g 的最下方

top    的位置相當於 baseline 到四線最上麵線的位置

bottom  的位置 相當於 baseline 到四線最下麵線的位置

(看見好多人說 top 是 ascent的最大值,bottom 是 descent 的最大值。通過測試我覺得這個說法不是很好,不過最後還是看自己理解了)

 

所以關於測量文字的高度只需要 descent- ascent (座標系演算法)

 

Paint 提供了倆個方法

1.ascent()

2.descent()

 

所以可以通過 mPaint.ascent()+ mPaint.descent() 擷取文字高度

 

 

上面介紹了通過FontMetrics來擷取文字的高度,下面介紹擷取文字 的寬度。

 

擷取文字的寬度就很簡單了。只不過是有一個地方需要注意一下即可。

 

Paint 提供了一個方法

measureText()

 

通過這個方法即可以輕鬆的擷取到文字的的寬度

 

需要注意的是 關於 Paint 的擷取 (TextView)

通過getPaint(); 得到 Paint 再去 通過 measureText(); 這個方法去擷取文字的寬度即可

 

要是在自訂View 中 可以通過 Paint 直接調用measureText(); 這個方法去擷取文字的寬度

 

 

下面在介紹一種方法可以同時擷取文字的寬度和高度

 

Paint提供了一個方法

getTextBounds()

這個方法需要提供一個參數 Rect 矩形地區,這個方法將文字的地區傳遞到 Rect

 

Rect 提供了倆個方法

width(); 可以得到文字的寬度

height(); 可以得到文字 的高度

 

不過這倆個方法最終得到的是int 類型的值在精度上面已經不準確了。


點擊開啟連結

 

 

 

 

 

 

 

 

 

android 文字尺寸(寬高)的測量

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.