Android中正確使用字體圖標(biāo)(iconfont)的方法
字體圖標(biāo)
字體圖標(biāo)是指將圖標(biāo)做成字體文件(.ttf),從而代替?zhèn)鹘y(tǒng)的png等圖標(biāo)資源。
使用字體圖標(biāo)的優(yōu)點(diǎn)和缺點(diǎn)分別為:
優(yōu)點(diǎn):
1. 可以高度自定義圖標(biāo)的樣式(包括大小和顏色),對(duì)于個(gè)人開(kāi)發(fā)者尤其適用
2. 可以減少項(xiàng)目和安裝包的大?。ㄌ貏e你的項(xiàng)目中有很多圖片icon時(shí),效果將是M級(jí))
3. 幾乎可以忽略屏幕大小和分辨率,做到更好的適配
4. 使用簡(jiǎn)單
……
缺點(diǎn):
1. 只能是一些簡(jiǎn)單的icon,不能代替如背景圖、9圖等資源
2. 一些需要文字說(shuō)明的icon,圖片資源將會(huì)是更好的選擇
3. 對(duì)設(shè)計(jì)的要求更高,不同icon可能擁有不同的邊距,這時(shí)要切換icon時(shí)還要設(shè)置大小
4. 由于邊距的存在可能存在無(wú)法填滿控件的情況
5. 無(wú)法在Android studio中進(jìn)行實(shí)時(shí)預(yù)覽
iconfont對(duì)于客戶端應(yīng)用來(lái)說(shuō)有很多便捷:
1、自由變化大小
2、自由修改顏色
3、可以添加一些視覺(jué)效果如:陰影、旋轉(zhuǎn)、透明度。
4、比單位的圖片更節(jié)省資源
正常的添加方案
第一步:復(fù)制字體文件到項(xiàng)目 assets 目錄;
第二步:打開(kāi) iconfont 目錄中的 demo.html,找到圖標(biāo)相對(duì)應(yīng)的 HTML 實(shí)體字符碼;
第三步:打開(kāi) res/values/strings.xml,添加 string 值;
<string name="icons"> 手機(jī)</string>
第四步:打開(kāi) activity_main.xml,添加 string 值到 TextView:
<TextView android:id="@+id/like" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/icons" />
第五步:為 TextView 指定文字:
import android.graphics.Typeface;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Typeface iconfont = Typeface.createFromAsset(getAssets(), "iconfont/iconfont.ttf");
TextView textview = (TextView)findViewById(R.id.like);
textview.setTypeface(iconfont);
}
設(shè)置完效果如下
就是這么簡(jiǎn)單完事。但是我們發(fā)現(xiàn)在activity代碼中setTypeface很沒(méi)有必要。因?yàn)槲覀冋麄€(gè)應(yīng)用有很多頁(yè)面都需要設(shè)置字體圖標(biāo)時(shí),這樣設(shè)置會(huì)有很多垃圾代碼產(chǎn)生。這時(shí)我們可以用一個(gè)簡(jiǎn)單的自定義view就解決問(wèn)題
public class IconFontTextview extends TextView {
public IconFontTextview(Context context) {
super(context);
init(context);
}
public IconFontTextview(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public IconFontTextview(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context){
Typeface iconfont = Typeface.createFromAsset(context.getAssets(), "iconfont/iconfont.ttf");
setTypeface(iconfont);
}
}
然后就是改一下我們布局文件
<com.xiaoming.liaoliao.view.IconFontTextview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:textColor="@android:color/holo_red_dark" android:text=" 手機(jī)" />
其他textview的屬性還是正常使用,解決
總結(jié)
如你所見(jiàn),使用字體圖標(biāo)可以高度自定義圖標(biāo)的大小和顏色,對(duì)于個(gè)人開(kāi)發(fā)者來(lái)說(shuō)是一個(gè)特別好的消息,再也不用在找圖標(biāo)時(shí)考慮顏色和大小了。以上就是在Android中正確使用字體圖標(biāo)(iconfont)的方法,希望這篇文章對(duì)各位Android開(kāi)發(fā)者們能有所幫助,如果有疑問(wèn)大家可以留言交流。謝謝大家低腳本之家的支持。
- Android實(shí)現(xiàn)底部圖標(biāo)與Fragment的聯(lián)動(dòng)實(shí)例
- Android開(kāi)發(fā)之APP安裝后在桌面上不顯示應(yīng)用圖標(biāo)的解決方法
- Android 桌面圖標(biāo)右上角顯示未讀消息數(shù)字
- Android實(shí)現(xiàn)下拉刷新的視圖和圖標(biāo)的旋轉(zhuǎn)
- Android如何動(dòng)態(tài)改變App桌面圖標(biāo)
- Android輸入框添加emoje表情圖標(biāo)的實(shí)現(xiàn)代碼
- Android獲取高清app圖標(biāo)代碼分享
- Android App更改應(yīng)用的圖標(biāo)的實(shí)現(xiàn)方法
相關(guān)文章
Android仿QQ分組實(shí)現(xiàn)二級(jí)菜單展示
這篇文章主要為大家詳細(xì)介紹了Android仿QQ分組實(shí)現(xiàn)二級(jí)菜單展示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Android使用TabLayou+fragment+viewpager實(shí)現(xiàn)滑動(dòng)切換頁(yè)面效果
這篇文章主要介紹了Android使用TabLayou+fragment+viewpager實(shí)現(xiàn)滑動(dòng)切換頁(yè)面效果,需要的朋友可以參考下2017-05-05
Android如何獲取子View的位置及坐標(biāo)詳解
這篇文章主要給大家介紹了關(guān)于Android如何獲取子View的位置及坐標(biāo)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Android實(shí)現(xiàn)字母導(dǎo)航控件的示例代碼
這篇文章主要介紹了通過(guò)自定義View實(shí)現(xiàn)字母導(dǎo)航控件的示例代碼,文中的實(shí)現(xiàn)過(guò)程講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的可以學(xué)習(xí)一下2022-01-01
談?wù)凙ndroid開(kāi)發(fā)之RecyclerView的使用全解
這篇文章主要介紹了談?wù)凙ndroid開(kāi)發(fā)之RecyclerView的使用全解,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12
Android XML設(shè)置屏幕方向(android:screenOrientation)詳解
這篇文章主要介紹了Android XML設(shè)置屏幕方向(android:screenOrientation)詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Android系統(tǒng)進(jìn)程間通信(IPC)機(jī)制Binder中的Client獲得Server遠(yuǎn)程接口過(guò)程源代碼分析
本文主要介紹Android 通信Binder中的Client獲得Server遠(yuǎn)程接口,這里對(duì)Android Binder 中Client中Server 源碼做了詳細(xì)分析介紹,有研究Android源碼的小伙伴可以參考下2016-08-08
Android自定義View實(shí)現(xiàn)進(jìn)度條動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)進(jìn)度條動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
在當(dāng)前Activity之上創(chuàng)建懸浮view之WindowManager懸浮窗效果
這篇文章主要介紹了在當(dāng)前Activity之上創(chuàng)建懸浮view之WindowManager懸浮窗效果的相關(guān)資料,需要的朋友可以參考下2016-01-01
Android實(shí)現(xiàn)動(dòng)態(tài)曲線繪制
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)動(dòng)態(tài)曲線繪制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06

