android中字體圖標的正確使用

YolandaStri 8年前發布 | 11K 次閱讀 安卓開發 Android開發 移動開發

iconfont對于客戶端應用來說有很多便捷:

1、自由變化大小

2、自由修改顏色

3、可以添加一些視覺效果如:陰影、旋轉、透明度。

4、比單位的圖片更節省資源

正常的添加方案

第一步:復制字體文件到項目 assets 目錄;

第二步:打開 iconfont 目錄中的 demo.html,找到圖標相對應的 HTML 實體字符碼;

第三步:打開 res/values/strings.xml,添加 string 值;

<string name="icons">  手機</string>

第四步:打開 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);

}</code></pre>

設置完效果如下

就是這么簡單完事。但是我們發現在activity代碼中setTypeface很沒有必要。因為我們整個應用有很多頁面都需要設置字體圖標時,這樣設置會有很多垃圾代碼產生。這時我們可以用一個簡單的自定義view就解決問題

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);  

} }</code></pre>

然后就是改一下我們布局文件

<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=" 手機" />

其他textview的屬性還是正常使用,解決

 

 

 本文由用戶 YolandaStri 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!