如何在Android设备中安装自定义字体

时间:2012-04-07 04:59:20

标签: android

我想在我的应用程序启动时在android设备中安装.ttf文件的自定义字体。实际上,当我运行我的应用程序时,我需要在我的Android设备中安装缅甸语字体。可能吗?如果是,那怎么样?我不需要字体。我想在系统中安装。

4 个答案:

答案 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。 更多信息可以从这个链接获得

http://chetangole.com/blog/2011/08/enabling-installing-hindi-marathi-unicode-fonts-on-android-mobile/

在设备的/ system / font文件夹中保存字体

可以从此链接获得更多信息

http://chetangole.com/blog/2011/08/enabling-installing-hindi-marathi-unicode-fonts-on-android-mobile/

答案 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;
    }