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

felixup 7年前發布 | 18K 次閱讀 安卓開發 Android開發 移動開發

介紹

Github地址: https://github.com/ximsfei/Android-skin-support

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 支持

最佳實踐

仿網易云音樂皮膚切換(https://github.com/ximsfei/Skin-Demo)

下載(https://github.com/ximsfei/Res/blob/master/skin-demo/app-debug.apk)

目前支持:

  • 支持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

    </li>
  • skin-support-design: material design 支持

    • TabLayout

    • AppBarLayout

    • NavigationView

    • </ul> </li> </ul>

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

      選擇需要的module依賴:

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

      dependencies {

      或者

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

      或者

      // 可以打開調試日志 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中初始化

      <p>@Override public void onCreate () {    </p>

      super .onCreate();    SkinCompatManager.init( this ).loadSkin(); 

      // 應用啟動加載當前(保存在SharedPreferences中)皮膚庫

      }

      繼承SkinCompatActivity

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

      public class BaseActivity extends SkinCompatActivity { }

      加載插件皮膚庫

      // 指定皮膚插件, 并且監聽加載狀態

      SkinCompatManager.getInstance().loadSkin( "new.skin" );

      // 恢復應用默認皮膚 SkinCompatManager.getInstance().restoreDefaultTheme();

      自定義View換膚

      要點:

      1. 實現SkinCompatSupportable接口

      2. 在構造方法中解析出需要換膚的resId

      3. 在applySkin方法中實現換膚

      實現:

      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, 即為皮膚包

       

       

       

 本文由用戶 felixup 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!