淺析Android加載字體包及封裝的方法
TextView加載字體包
在 Android 中,若需要使得某個TextView
加載字體包,使用以下方式即可:
Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/Bold.otf"); textView.setTypeface(typeFace);
至于字體包的位置:
通過以上方法,可以使得一個TextView
加載某種字體包,但是,還有這種需求:
- 部分
TextView
加載字體包 - 每個
TextView
加載的字體包不一定一樣
這時,我們就需要稍微封裝下,將其封裝成一個自定義TextView
類,若需要使用字體包,則加載該類,同時,可以根據(jù)xml
里面的值,從而加載不同的字體包。
封裝
定義屬性值
首先,我們需要從xml
里面獲取值,因此,需要在attr
中進行屬性值的定義:
<declare-styleable name="FontTextView"> <attr name="fontType" format="enum"> <enum name="bold" value="1" /> <enum name="heavy" value="2" /> </attr> </declare-styleable>
這里我只定義了兩種屬性,大家可以根據(jù)需求進行增減。
創(chuàng)建自定義TextView
public class FontTextView extends AppCompatTextView { public FontTextView(Context context) { super(context); } public FontTextView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public FontTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } }
獲取屬性值
//獲取參數(shù) TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FontTextView, defStyleAttr, 0); int fontType = a.getInt(R.styleable.FontTextView_fontType, 1);
進行值判斷并加載不同的字體包
private final int BOLD = 1; private final int HEAVY = 2; String fontPath = null; switch (fontType) { case BOLD: fontPath = "fonts/Bold.otf"; break; case HEAVY: fontPath = "fonts/Heavy.otf"; break; default: } //設(shè)置字體 if (!TextUtils.isEmpty(fontPath)) { Typeface typeFace = Typeface.createFromAsset(getContext().getAssets(), fontPath); setTypeface(typeFace); }
全部源碼
public class FontTextView extends AppCompatTextView { private final int BOLD = 1; private final int HEAVY = 2; public FontTextView(Context context) { super(context); } public FontTextView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public FontTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); //獲取參數(shù) TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FontTextView, defStyleAttr, 0); int fontType = a.getInt(R.styleable.FontTextView_fontType, 1); String fontPath = null; switch (fontType) { case BOLD: fontPath = "fonts/Bold.otf"; break; case HEAVY: fontPath = "fonts/Heavy.otf"; break; default: } //設(shè)置字體 if (!TextUtils.isEmpty(fontPath)) { Typeface typeFace = Typeface.createFromAsset(getContext().getAssets(), fontPath); setTypeface(typeFace); } } }
若需要使用字體包TextView
,使用以下方式即可:
<com.jm.core.common.widget.textview.FontTextView android:layout_width="wrap_content" android:layout_height="wrap_content" app:fontType="bold" android:text="測試" />
效果
到此這篇關(guān)于淺析Android加載字體包及封裝的方法的文章就介紹到這了,更多相關(guān)android加載字體包封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android webView字體突然變小的原因及解決
- Android使用TypeFace設(shè)置TextView的文字字體
- Android開發(fā)TextvView實現(xiàn)鏤空字體效果示例代碼
- Android開發(fā)之FloatingActionButton懸浮按鈕基本使用、字體、顏色用法示例
- 詳解android 中文字體向上偏移解決方案
- Android如何動態(tài)調(diào)整應(yīng)用字體大小詳解
- Android Studio設(shè)置、改變字體和主題的方法
- android 更改TextView中任意位置字體大小和顏色的方法
- Android修改字體樣式的示例代碼
- Android字體相關(guān)知識總結(jié)
相關(guān)文章
Android 中解決Viewpage調(diào)用notifyDataSetChanged()時界面無刷新的問題
這篇文章主要介紹了Android 中解決Viewpage調(diào)用notifyDataSetChanged()時界面無刷新的問題的相關(guān)資料,這里提供相應(yīng)的解決辦法,需要的朋友可以參考下2017-08-08Android中控件GridView實現(xiàn)設(shè)置行列分割線的方法示例
這篇文章主要介紹了利用Android中控件GridView實現(xiàn)設(shè)置行列分割線的方法,文中給出了詳細的介紹與示例代碼,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。2017-01-01Android基于OkHttp實現(xiàn)下載和上傳圖片
這篇文章主要為大家詳細介紹了Android基于OkHttp實現(xiàn)下載和上傳圖片功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11View觸發(fā)機制API實現(xiàn)GestureDetector OverScroller詳解
這篇文章主要為大家介紹了View觸發(fā)機制API實現(xiàn)GestureDetector OverScroller詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11詳解Android Webview加載網(wǎng)頁時發(fā)送HTTP頭信息
這篇文章主要介紹了詳解Android Webview加載網(wǎng)頁時發(fā)送HTTP頭信息的相關(guān)資料,需要的朋友可以參考下2017-05-05flutter實現(xiàn)掃碼槍獲取數(shù)據(jù)源禁止系統(tǒng)鍵盤彈窗示例詳解
這篇文章主要為大家介紹了flutter實現(xiàn)掃碼槍獲取數(shù)據(jù)源禁止系統(tǒng)鍵盤彈窗示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01Android5.0以上實現(xiàn)全透明的狀態(tài)欄方法(仿網(wǎng)易云界面)
下面小編就為大家分享一篇Android5.0以上實現(xiàn)全透明的狀態(tài)欄方法(仿網(wǎng)易云界面),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01