# MySkin **Repository Path**: mapleSeriesX/MySkin ## Basic Information - **Project Name**: MySkin - **Description**: Android 动态换肤框架 - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MySkin #### 介绍 MySkin 是一款 Android 动态换肤框架,支持自定义VIEW换肤,相比于静态皮肤,可以减小apk大小, 皮肤模块独立便于维护,由服务器下发,不需要发版即可实现动态更新! #### 软件架构 ![MySkin流程图](skin_flow.jpg) ##### 工作流程: 1. 单例模式:DCL + volatile,大幅降低synchronized带来的性能开销的同时阻止重排序和保证线程间的可见性。 2. 换肤:采集需要换肤的控件-加载皮肤包-保存所有可能被换肤的控件。 3. 采集:采集需要换肤的控件-View(background){TextVew(textColor\drawable)\ImageView\自定义控件}。 4. 查找:Application Component -{File Name\Resource ID-Resources-FileName}-AssetManager-Open-Apk (assets AndroidManifest.xml resources.arsc R.java res)。