赞
踩
gihub地址:https://github.com/ximsfei/Android-skin-support
样例:
默认:
更换后:
一、引入依赖:
- // -- 换肤依赖
- implementation 'skin.support:skin-support:4.0.5'// skin-support
- implementation 'skin.support:skin-support-appcompat:4.0.5'// skin-support 基础控件支持
- implementation 'skin.support:skin-support-design:4.0.5'// skin-support-design material design 控件支持[可选]
- implementation 'skin.support:skin-support-cardview:4.0.5'// skin-support-cardview CardView 控件支持[可选]
- implementation 'skin.support:skin-support-constraint-layout:4.0.5'// skin-support-constraint-layout ConstraintLayout 控件支持[可选]
二、创建MyApplication:
- public class Myapplication extends Application {
-
- @Override
- public void onCreate() {
- super.onCreate();
- SkinCompatManager.withoutActivity(this)
- .addInflater(new SkinAppCompatViewInflater()) // 基础控件换肤初始化
- .addInflater(new SkinMaterialViewInflater()) // material design 控件换肤初始化[可选]
- .addInflater(new SkinConstraintViewInflater()) // ConstraintLayout 控件换肤初始化[可选]
- .addInflater(new SkinCardViewInflater()) // CardView v7 控件换肤初始化[可选]
- .setSkinStatusBarColorEnable(false) // 关闭状态栏换肤,默认打开[可选]
- .setSkinWindowBackgroundEnable(false) // 关闭windowBackground换肤,默认打开[可选]
- .loadSkin();
-
-
- }
-
-
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
AndroidManifest.xml配置MyApplication.java:
三、创建需要换肤的资源
(1)选中main -> 右键New->Directory 创建res-后缀名
(2)res-后缀名资源文件下创建对应的drawable、values等资源文件,如下图所示
以res-red资源为例:
shape_my_info_bg_red.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android">
- <gradient
- android:angle="90"
- android:endColor="#E91E63"
- android:startColor="#70E91E63" />
- </shape>
colors.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
-
- <color name="skin_topbar_text_color_red">#860F08</color>
- <color name="skin_button_color_red">#CA493F</color>
- </resources>
四、初始布局使用默认res文件下资源
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="@drawable/shape_my_info_bg"
- tools:context=".MainActivity">
-
- <!--标题-->
- <TextView
- android:id="@+id/topBarTv"
- android:layout_width="match_parent"
- android:layout_height="60dp"
- android:gravity="center"
- android:textStyle="bold"
- android:textSize="20sp"
- android:text="标题信息"
- android:textColor="@color/skin_topbar_text_color"/>
-
- <Button
- android:id="@+id/changeBtn"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:background="@drawable/shape_my_info_bg"
- android:textStyle="bold"
- android:textColor="@color/skin_button_color"
- android:text="一键换肤(默认颜色)"/>
-
- <Button
- android:id="@+id/changeRedBtn"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:background="@drawable/shape_my_info_bg"
- android:textStyle="bold"
- android:textColor="@color/skin_button_color"
- android:text="一键换肤(红色)"/>
-
-
- <Button
- android:id="@+id/changeYellowBtn"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:background="@drawable/shape_my_info_bg"
- android:textStyle="bold"
- android:textColor="@color/skin_button_color"
- android:text="一键换肤(黄色)"/>
-
-
-
-
-
- </LinearLayout>
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
五、使用
- public class MainActivity extends AppCompatActivity implements View.OnClickListener{
-
- // 换肤按钮
- // 默认皮肤
- private Button changeBtn;
- // 红色皮肤
- private Button changeRedBtn;
- // 黄色皮肤
- private Button changeYellowBtn;
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- initControls();
-
- }
-
-
- // 控件初始化
- private void initControls(){
- // 默认颜色
- changeBtn = findViewById(R.id.changeBtn);
- changeBtn.setOnClickListener(this);
- // 红色
- changeRedBtn = findViewById(R.id.changeRedBtn);
- changeRedBtn.setOnClickListener(this);
- // 黄色
- changeYellowBtn = findViewById(R.id.changeYellowBtn);
- changeYellowBtn.setOnClickListener(this);
-
- }
-
- /**
- * 点击事件
- * */
- @Override
- public void onClick(View v) {
- switch (v.getId()){
- case R.id.changeBtn:// 默认颜色
- // 恢复默认皮肤
- SkinCompatManager.getInstance().restoreDefaultTheme();
- break;
- case R.id.changeRedBtn:// 红色
- // 前缀加载
- //SkinCompatManager.getInstance().loadSkin("light", SkinCompatManager.SKIN_LOADER_STRATEGY_PREFIX_BUILD_IN);
- // 后缀加载
- SkinCompatManager.getInstance().loadSkin("red", null,SkinCompatManager.SKIN_LOADER_STRATEGY_BUILD_IN);
- break;
- case R.id.changeYellowBtn:// 黄色
- // 前缀加载
- //SkinCompatManager.getInstance().loadSkin("light", SkinCompatManager.SKIN_LOADER_STRATEGY_PREFIX_BUILD_IN);
- // 后缀加载
- SkinCompatManager.getInstance().loadSkin("yellow", null,SkinCompatManager.SKIN_LOADER_STRATEGY_BUILD_IN);
- break;
- }
- }
-
- /**
- * 如果项目中使用的Activity继承自AppCompatActivity,需要重载getDelegate()方法
- * */
- @NonNull
- @Override
- public AppCompatDelegate getDelegate() {
- return SkinAppCompatDelegateImpl.get(this, this);
- }
-
-
-
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。