欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 測量文字寬度的實例方法

 更新時間:2020年02月05日 09:36:51   投稿:laozhang  
在本篇文章里小編給大家整理了關于Android 測量文字寬度的實例方法,需要的朋友們可以參考學習下。

最近在寫 APK 時遇到了需要獲取文本寬度的需求。其實就是要自己寫一個算法以實現文本超長自動換行的功能。

在實現這一功能時發(fā)現了原來在 Android 中測量文本的長度,或者說寬度可以分兩種情況:

1、測量絕對文本的長度

2、測量相對文本的長度

首先必須聲明這兩個概念是筆者自己定義的,因為我實在找不著更貼切的詞句去形容它們了。

什么是絕對文本呢?

就是指那些字號、字體、粗細等屬性不受在所運行的硬件設備上的 Android 系統(tǒng)的配置所影響文本。例如:自定義View時通過Canvas繪制出來的文本;

而相對文本在使用上就廣泛很多了。例如直接用 TextView 展示的文本、網頁上的文本、手機短信內容文本等。相對文本在字號、字體、粗細程度上除了受應用開發(fā)時的配置影響以外還會間接地受到系統(tǒng)設置的影響。例如在 Android 的系統(tǒng)設置 -- 顯示 -- 字體大小 中的配置就會間接地影響到相對文本的顯示效果。

這篇博文,就來記錄一下這兩種文本的測量長度的方法。

1、絕對文本長度的測量

絕對文本為了避免被系統(tǒng)配置影響到,通常都不使用 Android 自帶的控件來繪制文本。

比較常見的繪制文本的方式是通過 Canvas 的 drawText() 方法。

絕對文本的長度的測量通常是借助 Paint 來完成的,代碼也很簡單:

final String txt = "冠狀病毒是自然界廣泛存在的病毒,因該病毒形態(tài)在電鏡下觀察類似王冠而得名。";
Paint paint = new Paint();
paint.setTextSize(15);
float length = paint.measureText(txt);
Logger.d(TAG, "txt length:" + length);

這種測量方式得到的結果值是不隨系統(tǒng)顯示字號的改變而改變的。

2、相對文本長度的測量

最簡單的測量這種隨系統(tǒng)配置而改變屬性的文本的長度的方法就是借助于 Android 自身控件。這里貼出一種直接用 TextView 控件來測量的辦法:

final String txt = "冠狀病毒是自然界廣泛存在的病毒,因該病毒形態(tài)在電鏡下觀察類似王冠而得名。";
TextView tv = new TextView(this);
tv.setTextSize(16);
tv.setText(txt);
TextPaint tp = tv.getPaint();
float length = Layout.getDesiredWidth(tv.getText().toString(), 0, tv.getText().length(), tp);
Logger.d(TAG, "txt length:" + length);
Logger.d(TAG, "screen width:" + ScannerApplication.getInstance().getHardware().getAppWidth());
((FrameLayout)layout).addView(tv);

這種方法里同樣的字符串內容與 TextView 配置,卻可以動態(tài)地根據系統(tǒng)的字體設置來測量文本長度。以下是同一段代碼中在系統(tǒng)設置中將字體大小分別設置為小、普通與超大時的測量結果:

系統(tǒng)字體為小號時的測量結果:

Activity: txt length:720.0
Activity: screen width:720

系統(tǒng)字體為普通時的測量結果:

Activity: txt length:864.0
Activity: screen width:720

 

系統(tǒng)字體為超大時的測量結果:

Activity: txt length:1116.0
Activity: screen width:720

以上就是 Android 應用開發(fā)中關于文本長度測量的兩種方法,各位同學根據自己的實際應用場景來選擇使用即可。感謝大家的學習和對腳本之家的支持。

相關文章

  • ubuntu 12.10 上 android 編譯環(huán)境搭建的深入解析

    ubuntu 12.10 上 android 編譯環(huán)境搭建的深入解析

    本篇文章是對ubuntu 12.10上android 編譯環(huán)境的搭建進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Android?DataBinding布局的加載深入探究

    Android?DataBinding布局的加載深入探究

    看了谷歌官方文章確實寫的太簡略了,甚至看完之后有很多地方還不知道怎么回事兒或者怎么用,那么接下來我將通過文章全面介紹一下DataBinding布局的加載
    2022-11-11
  • android dialog自定義實例詳解

    android dialog自定義實例詳解

    簡單的自定義dialog,該dialog具備以下功能:有一個窗口可以顯示文章、根據需求顯示,有需要的朋友可以參考下
    2012-12-12
  • Android編程自定義AlertDialog樣式的方法詳解

    Android編程自定義AlertDialog樣式的方法詳解

    這篇文章主要介紹了Android編程自定義AlertDialog樣式的方法,結合實例形式詳細分析了Android自定義AlertDialog樣式的具體布局與功能實現相關操作技巧,需要的朋友可以參考下
    2018-02-02
  • 詳解如何使用Android Studio 進行NDK開發(fā)和調試

    詳解如何使用Android Studio 進行NDK開發(fā)和調試

    本篇文章主要介紹了詳解如何使用Android Studio 進行NDK開發(fā)和調試,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Android項目開發(fā) 教你實現Periscope點贊效果

    Android項目開發(fā) 教你實現Periscope點贊效果

    這篇文章主要為大家分享了Android項目開發(fā),一步一步教你實現Periscope點贊效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • android自定義控件實現簡易時間軸(1)

    android自定義控件實現簡易時間軸(1)

    這篇文章主要為大家詳細介紹了android自定義控件實現簡易時間軸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • AndroidStudio 如何使用aar詳解

    AndroidStudio 如何使用aar詳解

    本文主要介紹AndroidStudio 如何使用aar的資料,這里整理了詳細的資料,幫助大家學習理解此部分的知識,有需要的小伙伴可以參考下
    2016-09-09
  • Android Dialog詳解及實例代碼

    Android Dialog詳解及實例代碼

    這篇文章主要介紹了 Android Dialog詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-04-04
  • Android Studio綁定下拉框數據詳解

    Android Studio綁定下拉框數據詳解

    這篇文章主要為大家詳細介紹了Android Studio綁定下拉框數據,Android Studio綁定網絡JSON數據,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論