Как я могу получить список системных шрифтов Android, которые уже установлены и применяются к пользовательской клавиатуре - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно создать приложение, которое может получать список шрифтов, предварительно установленный на ОС Android. Мне нужно отобразить системный шрифт и могу выбрать, чтобы установить этот шрифт для моего приложения.

У меня есть номер функции в моем приложении, и мне нужно получить произвольный системный шрифт и применить этот стиль шрифта к моей пользовательской программной клавиатуре. как я могу применить этот шрифт к моей пользовательской программной клавиатуре.

Как я могу получить доступ к этому шрифту и применить к своему приложению?

Ответы [ 3 ]

1 голос
/ 07 марта 2019

Класс файлового менеджера для загрузки системных шрифтов

public class FontManager {
    // This function enumerates all fonts on Android system and returns the HashMap with the font
    // absolute file name as key, and the font literal name (embedded into the font) as value.
    static public HashMap< String, String > enumerateFonts()
    {
        String[] fontdirs = { "/system/fonts", "/system/font", "/data/fonts" };
        HashMap< String, String > fonts = new HashMap< String, String >();
        TTFAnalyzer analyzer = new TTFAnalyzer();

        for ( String fontdir : fontdirs )
        {
            File dir = new File( fontdir );

            if ( !dir.exists() )
                continue;

            File[] files = dir.listFiles();

            if ( files == null )
                continue;

            for ( File file : files )
            {
                String fontname = analyzer.getTtfFontName( file.getAbsolutePath() );


                if ( fontname != null ) {
//                    Log.d("fonts", fontname+" : "+file.getAbsolutePath());
                    fonts.put(file.getAbsolutePath(), fontname);
                }

            }




        }

        return fonts.isEmpty() ? null : fonts;
    }

Сведения о шрифте Модель класса:

public class FontDetail
{
    String sFontNames;
    String sFontPaths;
    String sFontType;

    public FontDetail(String sFontNames, String sFontPaths, String sFontType)
    {
        this.sFontNames = sFontNames;
        this.sFontPaths = sFontPaths;
        this.sFontType = sFontType;
    }

    public String getsFontNames()
    {
        return sFontNames;
    }

    public void setsFontNames(String sFontNames)
    {
        this.sFontNames = sFontNames;
    }

    public String getsFontPaths()
    {
        return sFontPaths;
    }

    public void setsFontPaths(String sFontPaths)
    {
        this.sFontPaths = sFontPaths;
    }

    public String getsFontType()
    {
        return sFontType;
    }

    public void setsFontType(String sFontType) {
        this.sFontType = sFontType;
    }
}

Список массивов для хранения списка шрифтов:

   ArrayList<FontDetail> arrLstFontDetail = new ArrayList<FontDetail>();

ЗагрузитьСистемные шрифты в arrLstFontDetails:

public void loadSystemFontsToListView() {
      try {
         Iterator<?> iter = FontManager.enumerateFonts().entrySet().iterator();

         while (iter.hasNext()) {
            @SuppressWarnings("rawtypes")
            Map.Entry mEntry = (Map.Entry) iter.next();
            LogMaintain.ShowLog(LogMaintain.LogType.Error, "System : " + (String) mEntry.getValue() + "Key: " + (String) mEntry.getKey());
            arrLstFontDetail.add(new FontDetail((String) mEntry.getValue(), (String) mEntry.getKey(), "System"));
         }
}
0 голосов
/ 07 марта 2019

Как получить список доступных / установленных шрифтов в Android?

Из вышеприведенного оригинального вопроса я получил свой ответ, но я расширяю свой ответ тем, что я действительно хотел сделать.как мы можем получить доступ к этим шрифтам в нашем приложении.

Мы можем получить доступ к системе из пути, используя эту функцию (Typeface.createFromFile("your file")

      String path = "/system/fonts";
      File file = new File(path);
      File ff[] = file.listFiles();

       for(int i = 0 ; i < ff.length ; i++){
       fontName.setText(file.getName());
       fontName.setTypeface(Typeface.createFromFile(ff[i]));   
       }
0 голосов
/ 07 марта 2019

Гарнитура - это класс, который поможет вам получить список всех установленных шрифтов.Затем вы можете сопоставить шрифты.Эта ссылка может помочь из этого: Как получить название шрифта, примененного к textview

...