android获取系统使用的字体,android - 我如何获取已安装的Android系统字体列表并将其应用于自定义键盘 - 堆栈内存溢出...

本文档介绍了如何在Android应用中使用FontManager类遍历系统字体目录,通过TTFAnalyzer获取字体名称,并将结果存储在HashMap中,最后将这些字体信息加载到ArrayList中供ListView展示。涉及FontManager、FontDetail类和文件操作。
摘要由CSDN通过智能技术生成

加载系统字体的文件管理器类

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 arrLstFontDetail = new ArrayList();

在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"));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值