finds.dev← search

// the find

hongyangAndroid/AndroidChangeSkin

★ 1,712 · Java · Apache-2.0 · updated Jul 2016

一种完全无侵入的换肤方式,支持插件式和应用内,无需重启Activity.

A theme-switching library for Android that applies skin changes at runtime without restarting the Activity. It works by scanning the view tree and replacing resources (colors, drawables, backgrounds) based on a naming convention encoded in each view's `android:tag`. Supports both in-app suffix-based skins and external plugin APKs loaded from the filesystem.

The tag-based approach is genuinely non-invasive — you don't subclass views or override inflate; the library hooks in post-layout via view traversal. Plugin APK loading (loading a separate APK's resources via PackageManager and a custom ResourceManager) is a real and underappreciated technique for true hot-swappable themes. The API surface is small: init once, register/unregister per Activity, call changeSkin. No reflection on private framework internals means it degrades gracefully.

Last commit was July 2016 — this is Android API 23 era code and has never been touched since. Plugin APK skinning loads APKs from arbitrary sdcard paths, which is a security concern on modern Android (scoped storage, APK signature verification not mentioned anywhere). The tag convention (`skin:resource_name:attribute`) is fragile and completely invisible to layout tooling — misspell it and you get a silent no-op at runtime. Only three attributes supported (src, background, textColor) with no documented path to add more without editing library source.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →