我想在我的应用程序启动时在android设备中安装.ttf文件的自定义字体。实际上,当我运行我的应用程序时,我需要在我的Android设备中安装缅甸语字体。可能吗?如果是,那怎么样?我不需要字体。我想在系统中安装。
答案 0 :(得分:21)
请参阅here @CommonsWare答案,您不能将字体添加到现有设备,除非作为自定义固件构建的一部分,或者可能通过生根设备。
但您可以在应用中添加字体。像:
TextView txtvw=(TextView)findViewById(R.id.textviewname);
Typeface typface=Typeface.createFromAsset(getAssets(),"fonts/burmese.ttf");
txtvw.setTypeface(typface);
注意:将您的字体放在项目
中的assets/fonts
目录中
或如果您的设备已植根,请参阅此安装Custom Fonts on Your Android Device
答案 1 :(得分:4)
你需要在设备的根目录
为此你可以使用这个应用程序EasyRoot.apk
下载并安装ES File Explorer (https://market.android.com/details?id=com.estrongs.android.pop)
之后,您需要启用root explorer。 更多信息可以从这个链接获得
在设备的/ system / font文件夹中保存字体
可以从此链接获得更多信息
答案 2 :(得分:3)
如果您有自定义字体,请使用以下代码:::
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/Verdana.ttf");
tv.setTypeface(face);
还将您的字体放在assets / fonts文件夹中
答案 3 :(得分:0)
我为我的项目创建了一个FontWrapper类。
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;
}