我想在我的Android设备上安装一个.ttf文件的自定义字体,当我的应用程序启动时。实际上,当我运行我的应用程序时,我需要在我的Android设备上安装缅甸字体。这是否可能?如果是,那么怎么做呢?我不需要字体风格,我想要安装在系统中。
我想在我的Android设备上安装一个.ttf文件的自定义字体,当我的应用程序启动时。实际上,当我运行我的应用程序时,我需要在我的Android设备上安装缅甸字体。这是否可能?如果是,那么怎么做呢?我不需要字体风格,我想要安装在系统中。
请参考@CommonsWare在这里提供的答案。您无法向现有设备添加字体,除非作为自定义固件构建的一部分或通过对设备进行root来实现。
但您可以在您的应用程序中添加字体,例如:
TextView txtvw=(TextView)findViewById(R.id.textviewname);
Typeface typface=Typeface.createFromAsset(getAssets(),"fonts/burmese.ttf");
txtvw.setTypeface(typface);
注意: 将字体放在项目的assets/fonts
目录中。
或者,如果您的设备已 ROOT,则可以查看这个教程来安装自定义字体到 Android 设备中。
您需要处于设备的根目录。
为此,您可以使用此应用程序EasyRoot.apk。
下载并安装ES文件浏览器(https://market.android.com/details?id=com.estrongs.android.pop)。
之后,您需要启用root浏览器。更多信息可以从此链接获得。
将字体保存在设备的/system/font文件夹中。
更多信息可以从此链接获得。
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/Verdana.ttf");
tv.setTypeface(face);
同时将字体放置在assets/fonts文件夹中
public static Typeface getTypeface(Context c, Fonts name) {
synchronized (typefaces) {
if (!typefaces.containsKey(name)) {
try {
String fontPath = getFontsPath(name);
if (!StringUtil.isNullOrEmpty(fontPath)) {
InputStream inputStream = c.getAssets().open(fontPath);
File file = createFileFromInputStream(inputStream);
if (file == null) {
return Typeface.DEFAULT;
}
Typeface t = Typeface.createFromFile(file);
typefaces.put(name, t);
} else {
return Typeface.DEFAULT;
}
} catch (Throwable e) {
e.printStackTrace();
return Typeface.DEFAULT;
}
}
return typefaces.get(name);
}
}
private static File createFileFromInputStream(InputStream inputStream) {
try {
File f = File.createTempFile("font", null);
OutputStream outputStream = new FileOutputStream(f);
byte buffer[] = new byte[1024];
int length = 0;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.close();
inputStream.close();
return f;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}