Android開源:Android-skin-support - 一款用心去做的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
-
-
skin-support-design: material design 支持
-
TabLayout
-
AppBarLayout
-
NavigationView
</ul> </li>
</ul>
-
實現SkinCompatSupportable接口
-
在構造方法中解析出需要換膚的resId
-
在applySkin方法中實現換膚
-
自定義View可以直接繼承自SkinCompatView, SkinCompatLinearLayout等已有控件
eg: CustomTextView
-
不想繼承自已有控件
eg: CustomTextView2
-
需要換膚自定義屬性
// 需要換膚AutoCompleteTextView的R.attr.popupBackground屬性
eg: SkinCompatAutoCompleteTextView
-
需要使用第三方庫控件怎么辦
// 需要使用https://github.com/hdodenhof/CircleImageView 控件, 并且要支持換膚
eg: CustomCircleImageView
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換膚
要點:
實現:
制作皮膚插件:
新建Android application工程
將需要換膚的資源放到res目錄下(同名資源)
打包生成apk, 即為皮膚包
-