Android:换肤框架Android-Skin-Support

这篇具有很好参考价值的文章主要介绍了Android:换肤框架Android-Skin-Support。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

样例:

默认:

Android:换肤框架Android-Skin-Support,android

更换后:

Android:换肤框架Android-Skin-Support,android

一、引入依赖:

// -- 换肤依赖
    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();


    }


}

AndroidManifest.xml配置MyApplication.java:

Android:换肤框架Android-Skin-Support,android

三、创建需要换肤的资源

Android:换肤框架Android-Skin-Support,android

 

(1)选中main -> 右键New->Directory 创建res-后缀名

Android:换肤框架Android-Skin-Support,android

 (2)res-后缀名资源文件下创建对应的drawable、values等资源文件,如下图所示

Android:换肤框架Android-Skin-Support,android

以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://www.toymoban.com/news/detail-640144.html

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);
    }



}

到了这里,关于Android:换肤框架Android-Skin-Support的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Alien Skin Exposure8免费版PS图片滤镜插件

    Alien Skin Exposure一款非常专业的图片后期处理软件,内含500多种照片滤镜。是一款图片后期处理功能非常强大的软件。这款软件可以对图片的后期效果做很好的处理。 打开 Alien Skin Exposure 软件,会显示下面这个界面,如图1. 图1: Alien Skin Exposure 软件打开界面 然后点击文件,从

    2024年02月05日
    浏览(44)
  • Vue换肤主题

    拷贝颜色选择组件 ** ThemePicker

    2024年02月05日
    浏览(30)
  • 分享一个一键换肤按钮(超酷)

    先上效果图: 效果图中转换为黑夜会有一个宇航员小猴子飞上来,途中没有截到。。。。 废话不多说,上代码: 代码比较长,有看不懂的同学可以私信我~

    2024年02月05日
    浏览(37)
  • 【小沐学Unity3d】3ds Max 骨骼动画制作(蒙皮修改器skin)

    “蒙皮”修改器是一种骨骼变形工具,主要设计用于通过另一个对象对一个对象进行变形来创建角色动画。可使用骨骼、样条线和其他对象变形网格、面片和 NURBS 对象。 如果将“蒙皮”修改器应用到网格,然后使用修改器指定骨骼,则每个骨骼都将收到一个胶囊形状的“封

    2024年02月10日
    浏览(49)
  • vue + less 实现动态主题换肤功能

    在vue项目中(我的是2.6.11版本的)使用less做到切换主题肤色。话不多说,直接开始。 我这里的项目是2.6.11版本的 安装一些less的插件 路径: src assets style theme 翻译:theme 的中文就是主题 注意点:考虑到切换样式也是样式中的,所以放在style里面,当然, 你可以放在任意位置

    2024年02月12日
    浏览(35)
  • 记录--Vue3自定义一个Hooks,实现一键换肤

    使用CSS变量, 准备两套CSS颜色 , 一套是在 light模式下的颜色,一套是在dark模式下的颜色 dark模式下的 CSS 权重要比 light 模式下的权重高 , 不然当我们给html添加自定义属性 [data-theme=\\\'dark\\\'] 的时候, dark模式权重比light低,会一直不起效果 当我们点击 dark 模式的时候, 给 html 设置自定义

    2024年02月07日
    浏览(40)
  • HTML、CSS和JavaScript,实现换肤效果的原理

    这篇涉及到HTML DOM的节点类型、节点层级关系、DOM对象的继承关系、操作DOM节点和HTML元素 还用到HTML5的本地存储技术。 换肤效果的原理:是在选择某种皮肤样式之后,通过JavaScript脚本来加载选中的样式,再通过localStorage存储。 先来回忆一下HTML DOM的相关知识。 DOM模型就是通

    2024年02月06日
    浏览(46)
  • 前端实现动态切换主题色-使用 css/less 动态更换主题颜色(换肤功能)或通过单击更改背景颜色

    提示: 以下是本篇文章正文内容,主要描述 使用 css/less 动态更换主题色(换肤功能) 提示: 使用 css/less 动态更换主题色(换肤功能), 方法共通,不限制技术栈: 其实在日常项目开发中经常会遇到有些用户想要一些自定义的的主题色来满足不同的视觉需求,这时候就需

    2024年02月15日
    浏览(67)
  • Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界面

    这个系列对应自定义控件大全,一个专注于控件的编写,一个专注于UI界面的编写,程序员有两大软肋,一个是忌讳别人说自己的程序很烂很多bug,一个就是不擅长UI,基本上配色就直接rgb,对于第一点,只要放松心态,直面自己的不足,不断改进,才能问鼎武林至尊。至于第

    2024年01月20日
    浏览(35)
  • Android 音频框架 基于android 12

    前言 Android 的音频是一个相当复杂的部分。从应用到框架、hal、kernel、最后到硬件,每个部分的知识点都相当的多。而android 这部分代码在版本之间改动很大、其中充斥着各种workaround的处理,让人看的云里雾里。网上相应的分析文章也很多,有些就贴大段的代码 是很不容易理

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包