package com.v7lin.android.env.extra;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.res.Resources;
import com.v7lin.android.env.EnvResourcesManager;
import com.v7lin.android.env.EnvResourcesWrapper;
import com.v7lin.android.env.font.FontFamily;
import com.v7lin.android.env.skin.SkinFamily;
/**
*
*
* @author v7lin Email:v7lin@qq.com
*/
public class ExtraHelper {
public static <FontData> ArrayList<FontData> loadFontDatas(Context context, File fontDir, FilenameFilter fontFilter, ExtraCreator<FontData, FontFamily> creator) {
ArrayList<FontData> fontDatas = new ArrayList<FontData>();
final Resources currRes = context.getResources();
if (currRes != null && currRes instanceof EnvResourcesWrapper) {
EnvResourcesWrapper currEnvRes = (EnvResourcesWrapper) currRes;
Resources oriRes = currEnvRes.getWrapped();
// 当前字体
FontFamily currFontFamily = currEnvRes.getFontFamily();
// 读取默认字体参数
FontFamily defaultFontFamily = FontFamily.DEFAULT_FONT;
fontDatas.add(creator.createFrom(oriRes, defaultFontFamily, currFontFamily));
// 读取font文件夹下字体参数
File[] fontFiles = fontDir.listFiles(fontFilter);
if (fontFiles != null && fontFiles.length > 0) {
for (File fontFile : fontFiles) {
String fontPath = fontFile.getAbsolutePath();
FontFamily fontFamily = EnvResourcesManager.getGlobal().getTopLevelFontFamily(context, fontPath);
fontDatas.add(creator.createFrom(oriRes, fontFamily, currFontFamily));
}
}
}
return fontDatas;
}
public static <SkinData> List<SkinData> loadSkinDatas(Context context, File skinDir, FilenameFilter skinFilter, ExtraCreator<SkinData, SkinFamily> creator) {
ArrayList<SkinData> skinDatas = new ArrayList<SkinData>();
final Resources currRes = context.getResources();
if (currRes != null && currRes instanceof EnvResourcesWrapper) {
EnvResourcesWrapper currEnvRes = (EnvResourcesWrapper) currRes;
Resources oriRes = currEnvRes.getWrapped();
// 当前皮肤
SkinFamily currSkinFamily = currEnvRes.getSkinFamily();
// 读取默认皮肤参数
SkinFamily defaultSkinFamily = new SkinFamily(null, context.getPackageName(), oriRes);
skinDatas.add(creator.createFrom(oriRes, defaultSkinFamily, currSkinFamily));
// 读取skin文件夹下皮肤参数
File[] skinFiles = skinDir.listFiles(skinFilter);
if (skinFiles != null && skinFiles.length > 0) {
for (File skinFile : skinFiles) {
String skinPath = skinFile.getAbsolutePath();
SkinFamily skinFamily = EnvResourcesManager.getGlobal().getTopLevelSkinFamily(context, skinPath);
skinDatas.add(creator.createFrom(oriRes, skinFamily, currSkinFamily));
}
}
}
return skinDatas;
}
}