2013-11-20 63 views
0

我正在嘗試爲整個應用程序使用Roboto字體。創建字體對象並將其應用於所有字段需要工作但繁瑣,因爲字段的數量在每個TextView上分開了findViewId(),Button會降低性能。 我正在嘗試進行配置,因爲大多數人都在互聯網上提出建議,但我無法使用Roboto。我得到「無襯線燈」,因爲沒有被識別。整個應用程序的Roboto字體

請建議遵循哪種方法。

+0

只是一個提醒靜態字樣對象,Roboto可能會在Android 4.0及更高版本上推出。如果你想使用「自定義字體」,你必須以編程方式進行。 – gian1200

+0

我正在使用ICS;所以,唯一的方法是編程式的...基於文本視圖和按鈕的數量,這是一個相當繁瑣的任務 – harshal

+0

如果您的minSdkVersion是ICS(第14版),那麼它很有可能是設備具有Roboto。但是,這並不意味着它將成爲默認字體。談到性能和最小化內存和CPU使用率,我建議使用和重用靜態方法(Singleton風格)從Assets加載字體以避免額外的分配。 CTRL + C和CRTL + V也是好朋友:P – gian1200

回答

0

創建一個類,

public class CustomTextView extends TextView { 
static Typeface Roboto_Bold = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Bold.ttf"); 
static Typeface Roboto_Regular = Typeface.createFromAsset(Global.mainActivity.getAssets(), "Roboto-Regular.ttf"); 

並在構造函數添加以下代碼,使用CustomTextView在整個應用程序,而不是TextView的

try { 
    int style = getTypeface().getStyle(); 
    if (style == (Typeface.BOLD)) { 
     isBold = true; 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
if (isBold) 
     this.setTypeface(Roboto_Bold); 
else 
     this.setTypeface(Roboto_Regular); 

-----更新,

我最近發現自定義字體將以巨大的內存消耗存儲在本機內存中。因此,在自定義TextView類中創建字體會在很大程度上填充本機內存(在我的情況下爲300 MB)取決於創建的TextView實例的數量。

因此,更好地創造出TextView的指因此減少內存消耗(對我來說20 MB)

,如果你有一個以上的自定義視圖的使用字樣考慮全局靜態字樣