Android-skin-support 一款用心去做的Android 換膚框架

介紹

Android-skin-support: 一款用心去做的Android 換膚框架, 極低的學(xué)習(xí)成本, 極好的用戶體驗(yàn).

重要的事情說三遍:
只需要兩行代碼, 就可以實(shí)現(xiàn)換膚, 你值得擁有!!!
只需要兩行代碼, 就可以實(shí)現(xiàn)換膚, 你值得擁有!!!
只需要兩行代碼, 就可以實(shí)現(xiàn)換膚, 你值得擁有!!!

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

SkinCompatManager.init(this).loadSkin();

第二行: 繼承自SkinCompatActivity

public class BaseActivity extends SkinCompatActivity {}

就這么簡單, 你的APK已經(jīng)擁有了強(qiáng)大的換膚功能.

skin-app // 換膚demo app
skin-night // 換膚demo 夜間模式
skin-support // 換膚框架, 基礎(chǔ)控件支持
skin-support-design // 換膚框架, Material Design 支持

最佳實(shí)踐

仿網(wǎng)易云音樂皮膚切換
下載

red_1.png

red_2.png

red_3.png

white_1.png

white_2.png

white_3.png

night_1.png

night_2.png

night_3.png

支持

目前支持:

  • 支持Android 4.x, 5.x, 6.x, 7.x

  • 支持自定義View換膚

  • skin-support: appcompat-v7 支持

    • View
    • Button
    • CheckBox
    • EditText
    • TextView
    • ImageView
    • ImageButton
    • RadioButton
    • FrameLayout
    • LinearLayout
    • RelativeLayout
    • CheckedTextView
    • AutoCompleteTextView
    • MultiAutoCompleteTextView
    • android.support.v7.widget.Toolbar
  • skin-support-design: material design 支持

用法

導(dǎo)入:

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

選擇需要的module依賴:

// aar
dependencies {
    compile(name: 'skin-support-release', ext: 'aar') // Android 基礎(chǔ)控件, 及V7包中的一些控件
    compile(name: 'skin-support-design-release', ext: 'aar') // Android support design包中的一些控件
}

或者

dependencies {
    compile project(':skin-support')
    compile project(':skin-support-design')
}

或者

// 可以打開調(diào)試日志
dependencies {
    releaseCompile project(path: ':skin-support', configuration: 'release')
    debugCompile project(path: ':skin-support', configuration: 'debug')
    releaseCompile project(path: ':skin-support-design', configuration: 'release')
    debugCompile project(path: ':skin-support-design', configuration: 'debug')
}

初始化:

在Application的onCreate中初始化

@Override
public void onCreate() {
    super.onCreate();
    SkinCompatManager.init(this).loadSkin(); // 應(yīng)用啟動加載當(dāng)前(保存在SharedPreferences中)皮膚庫
}

繼承SkinCompatActivity

讓所有需要換膚的Activity繼承自skin.support.app.SkinCompatActivity.

public class BaseActivity extends SkinCompatActivity {}

加載插件皮膚庫

// 指定皮膚插件, 并且監(jiān)聽加載狀態(tài)
SkinCompatManager.getInstance().loadSkin("new.skin");
// 恢復(fù)應(yīng)用默認(rèn)皮膚
SkinCompatManager.getInstance().restoreDefaultTheme();

自定義View換膚

要點(diǎn):

  1. 實(shí)現(xiàn)SkinCompatSupportable接口
  2. 在構(gòu)造方法中解析出需要換膚的resId
  3. 在applySkin方法中實(shí)現(xiàn)換膚

實(shí)現(xiàn):

  1. 自定義View可以直接繼承自SkinCompatView, SkinCompatLinearLayout等已有控件
    eg: CustomTextView
  2. 不想繼承自已有控件
    eg: CustomTextView2
  3. 需要換膚自定義屬性
    // 需要換膚AutoCompleteTextView的R.attr.popupBackground屬性
    eg: SkinCompatAutoCompleteTextView
  4. 需要使用第三方庫控件怎么辦
    // 需要使用https://github.com/hdodenhof/CircleImageView 控件, 并且要支持換膚
    eg: CustomCircleImageView

制作皮膚插件:

新建Android application工程

將需要換膚的資源放到res目錄下(同名資源)

打包生成apk, 即為皮膚包

交流合作

深入研究發(fā)現(xiàn)Android換膚原理其實(shí)不難, 難在要實(shí)現(xiàn)一個完善的換膚框架所帶來的工作量, 所以在沒有特殊原因的前提下, 希望大家多多使用, 多多交流, 為本項(xiàng)目貢獻(xiàn)自己的力量, 為所有Android開發(fā)者帶來福音, 減少沒必要的工作量.


QQ群二維碼

致謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容