Skip to content

Android-skin-support is an easy dynamic skin framework to use for Android, Only one line of code to integrate it. Android 换肤框架, 极低的学习成本, 极好的用户体验. "一行"代码就可以实现换肤, 你值得拥有!!!

License

Notifications You must be signed in to change notification settings

ximsfei/Android-skin-support

Repository files navigation

Android-skin-support

v1.1.0 v0.1.0

介绍

Android-skin-support: 一款用心去做的Android 换肤框架, 极低的学习成本, 极好的用户体验.

只需要两行代码, 就可以实现换肤, 你值得拥有!!!

第一行: 在Application的onCreate中初始化

SkinCompatManager.init(this).loadSkin();

第二行: 继承自SkinCompatActivity

public class BaseActivity extends SkinCompatActivity {}

就这么简单, 你的APK已经拥有了强大的换肤功能.

skin-app // 换肤demo app

skin-night // 换肤demo 夜间模式

skin-support // 换肤框架, 基础控件支持

skin-support-design // 换肤框架, Material Design 支持

更新日志

skin-support: 基础控件 支持

  • v1.1.0 新功能开发

    • 支持开发者标记不换肤控件
  • v1.0.2 bugfix

    • 解决RecyclerView中item无法回收导致的OutOfMemory问题

    • 关闭Debug Log

  • v1.0.1 支持所有基础控件换肤

    • View
    • Button
    • Spinner
    • SeekBar
    • CheckBox
    • EditText
    • TextView
    • RatingBar
    • ImageView
    • ProgressBar
    • ImageButton
    • RadioButton
    • FrameLayout
    • LinearLayout
    • RelativeLayout
    • CheckedTextView
    • AutoCompleteTextView
    • MultiAutoCompleteTextView
    • android.support.v7.widget.Toolbar

skin-support-design: material design 支持

  • v0.1.0 新功能开发 依赖skin-support v1.1.0

    • 支持开发者标记不换肤控件
  • v0.0.2 支持以下三个控件换肤 依赖skin-support v1.0.2

    • TabLayout
    • AppBarLayout
    • NavigationView

最佳实践

仿网易云音乐

仿网易云音乐皮肤切换

仿网易云音乐应用下载

red 1 red 2 red 3

white 1 white 2 white 3

night 1 night 2 night 3

Testin 测试结果: Testin

用法

导入:

可以直接下载源码, 选择需要的module依赖:

git clone https://github.com/ximsfei/Android-skin-support.git

也可以直接添加依赖, 最新版本选择, 请查看更新日志

compile 'skin.support:skin-support:1.1.0'        // skin-support 基础控件支持
compile 'skin.support:skin-support-design:0.1.0' // skin-support-design material design 控件支持

使用:

在Application的onCreate中初始化

@Override
public void onCreate() {
    super.onCreate();
    SkinCompatManager.init(this).loadSkin(); // 应用启动时初始化换肤框架并且加载当前(保存在SharedPreferences中)皮肤库
}

继承SkinCompatActivity

让所有需要换肤的Activity继承自skin.support.app.SkinCompatActivity.

public class BaseActivity extends SkinCompatActivity {}

皮肤开关

如果项目中有特殊需求, 例如, 股票控件: 控件颜色始终为红色或绿色, 不需要随着模式切换而换肤, 可以在布局文件中对应的控件上添加skinSupport属性.

xmlns:skin="http://schemas.android.com/apk/res-auto"

skin:skinSupport="false"

默认不填, 该值为true.

加载插件皮肤库

// 指定皮肤插件
SkinCompatManager.getInstance().loadSkin("new.skin"[, SkinLoaderListener]);

// 恢复应用默认皮肤
SkinCompatManager.getInstance().restoreDefaultTheme();

自定义View换肤

要点:

  1. 实现SkinCompatSupportable接口

  2. applySkin方法中实现换肤操作

  3. getSkinSupport方法返回true, 控件支持换肤; 返回false, 不进行换肤.

  4. 在构造方法中解析出需要换肤的resId

制作皮肤插件:

新建Android application工程

皮肤工程包名不能和宿主应用包名相同.

例如:

宿主包名: com.ximsfei.skindemo
夜间模式: com.ximsfei.skindemo.night

将需要换肤的资源放到res目录下(同名资源)

例如 APK中窗口背景颜色为

colors.xml

<color name="background">#ffffff</color>

那么夜间模式你可以在skin-night工程中设置

colors.xml

<color name="background">#000000</color>

打包生成apk, 即为皮肤包

将打包生成的apk文件, 重命名为'xxx.skin', 防止apk结尾的文件造成混淆.

交流&支持

加群交流

如有任何疑问, 可扫码加入QQ群进行技术交流:

QQ群二维码

打赏支持

如果觉得换肤框架很好用, 对您有所帮助, 请随意打赏, 或者分享转发给更多朋友.

您的支持与认可, 将使我在开源的道路上越走越远, 谢谢您!

支付宝扫码打赏

支付宝

微信扫码打赏

微信

感谢支持我的人

昵称         支付方式 付款时间   金额   留言         
匿名         微信     2017-02-28 23:38:46 1 元    无          
匿名         支付宝    2017-02-28 23:42:13 1 元   无      
匿名         微信     2017-03-01 09:39:09 5 元   感谢你的开源库
匿名         微信    2017-03-03 15:28:45 1 元 
匿名         微信    2017-03-04 22:05:55 3 元    加油        

致谢

About

Android-skin-support is an easy dynamic skin framework to use for Android, Only one line of code to integrate it. Android 换肤框架, 极低的学习成本, 极好的用户体验. "一行"代码就可以实现换肤, 你值得拥有!!!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •