廢話不多說直接上思路和代碼。
1.在Assets中建立一個fonts檔案夾並將字型檔放入該檔案夾中。
2.代碼對textview操作。
textview.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "你Assets中的字型檔"));
以上代碼就可以實現自訂字型的實現。
字型檔停用原因和解決辦法。
1.Assets檔案大小限制。
Android Asset Packaging Tool(aapt)使用這個工具可打包所有資料 Image XML檔案 任何資源檔.在產生APK時aapt選擇性的壓縮各種資源來節省裝置空間,aapt使用尾碼來決定哪個資源需要壓縮,aapt源碼定義一些不需要壓縮的檔案尾碼。
/* these formats are already compressed, or don't compress well */
static const char* kNoCompressExt[] = {
".jpg", ".jpeg", ".png", ".gif",
".wav", ".mp2", ".mp3", ".ogg", ".aac",
".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",
".rtttl", ".imy", ".xmf", ".mp4", ".m4a",
".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",
".amr", ".awb", ".wma", ".wmv"
};
在Android 2.3以前的任何壓縮的資源的原始大小超過1M將不能從APK中讀出,如果你使用AssetManager 或 Resources classes方法來擷取InputStream,將拋出java.io.IOException的異常如下 DEBUG/asset(1123): Data exceeds UNCOMPRESS_DATA_MAX (20078432 vs 1048576);
可以看到如果需要打包資料庫檔案過大就需要注意了。
2.解決方案如下:
1.將你的資源檔尾碼改成上面列出的尾碼。
2.在命令列上使用-0參數來指定不需要壓縮的檔案尾碼。當你使用Eclipse內的ADT目前還不知道有什麼方法可以傳遞-0參數給aapt。
3.將你的資源檔分割成UNCOMPRESS_DATA_MAX(1M)以下的檔案.
小弟把字型自訂和Assets檔案大小限制放在一起了,如有抄襲,敬請見諒。
註明:QQ技術交流群:108614806 感興趣的加一下。