XAppSkin
Android App换肤框架
Install / Use
/learn @feer921/XAppSkinREADME
Android App内换肤框架
使用
1.初始化本框架SDK
class App : Application() {
override fun onCreate() {
super.onCreate()
XSkinManager.init(this,"")//初始化换肤SDK
}
}
其中SDK的核心类为 XSkinManager, 其初始化方法为:
/**
* 初始化换肤SDK
* @param context Context
* @param lastSkinPkgResPath 用户上次选择/切换的 皮肤资源包文件完整路径
*/
fun init(context: Context, lastSkinPkgResPath: String) {
mManager.initSdk(context, lastSkinPkgResPath)
}
-
当用户选择了一个皮肤资源后,App则通过网络下载的方式把资源包下载下来并存到指定路径,然后调用本框架的加载皮肤资源包的方法,即可完成换肤
/** * 加载皮肤资源 * @param theSkinResFilePath 携带皮肤资源的的文件(一般为Apk(插件Apk))完整路径 */ @SuppressLint("PrivateApi") fun loadSkinRes(context: Context, theSkinResFilePath: String) { Log.i(TAG,"--> loadSkinRes() theSkinResFilePath = $theSkinResFilePath") if (theSkinResFilePath.isBlank()) { return } //..... } -
框架本身支持的可换肤的 View 的属性如下:
private const val ATTR_NAME_BACKGROUND = "background" private const val ATTR_NAME_SRC = "src" private const val ATTR_NAME_TEXT_COLOR = "textColor" private const val ATTR_NAME_TEXT_COLOR_HINT = "textColorHint" private const val ATTR_NAME_TEXT = "text" "drawableLeft", "drawableStart", "drawableRight", "drawableEnd", "drawableBottom"如果 App有其他的需要支持的属性,则可以使用如下方法来添加:
/** * 在本框架不满足默认的可支持换肤属性名称时,可在初始化时增加其他的属性名称 */ fun addSupportSkinableAttrName(attrName: String) { if (attrName.isNotBlank()) { mSupportSkinableAttrNames.add(attrName) } }默认场景下,使用上面的步骤,App就可以支持换肤功能了。
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
