QMUI 学习一: 入门,如何添加QMUI框架到 android项目 ,并引入QMUI的主题Theme:

2023-11-14

 

用是最新的Android Studio 3.6.x的,下了新的QMUI Demo参考学习UI。

先上效果图:

如何添加QMUI框架并引用它的主题:

1. 添加框架: 在app.gradle里面添加依赖: implementation 'com.qmuiteam:qmui:2.0.0-alpha08'

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    testImplementation  project(path: ':FastBleLib')
    implementation 'com.qmuiteam:qmui:2.0.0-alpha08'
}

修改引用的主题2个方法:

方法一:去改AndroidMainfest.xml 

2.修改AndroidMainfest.xml主题: android:theme="@style/QMUI.Compat",同时在activity里也设置了theme:

 <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/QMUI.Compat">

 <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/QMUI.Compat">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/QMUI.Compat">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

方法二:修改style.xml的AppTheme主题,将parent指向QMUI.Compat

3. 修改style.xml主题:

<style name="AppTheme" parent="QMUI.Compat">

<!-- 重写系统 或者 QMUI 提供的 attr --> </style>

 

将以上的Theme修改:style name="AppTheme" parent="QMUI.Compat.NoActionBar":

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="QMUI.Compat.NoActionBar">
<!--        &lt;!&ndash; Customize your theme here. &ndash;&gt;-->
<!--        <item name="colorPrimary">@color/colorPrimary</item>-->
<!--        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->
<!--        <item name="colorAccent">@color/colorAccent</item>-->
<!--        <item name="qmui_background_color">@color/qmui_config_color_background</item>-->
    </style>
...

</resources>

这样二个地方选择其中一个改都可以将QMUI的主题引入。

源码:

activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.qmuiteam.qmui.widget.QMUITopBarLayout
        android:id="@+id/topbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:fitsSystemWindows="true">
    </com.qmuiteam.qmui.widget.QMUITopBarLayout>

    <com.qmuiteam.qmui.widget.webview.QMUIWebViewContainer
        android:id="@+id/webview_container"
        android:fitsSystemWindows="true"
        android:layout_marginTop="?attr/qmui_topbar_height"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <include layout="@layout/content_main"/>

    </com.qmuiteam.qmui.widget.webview.QMUIWebViewContainer>


</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout>

 

按上面的修改出来的主题如下,感觉还是与QMUI主题不符,怎么不是蓝色的标题栏???:

对比他的Demo

 

问题1: 标题栏的app名字显示出来了。

原因1: MainAcitivity.class:原来继承

 public class MainActivity extends AppCompactActivity 改成:
 public class MainActivity extends Activity

然后设置topBar颜色:

        在MainActivity.class里面设置topBar的方法里面添加: 
         mTopBar.setBackgroundColor(ContextCompat.getColor(this, R.color.app_color_theme_4));
       防止设置颜色调用失败,然后在res-values目录下的colors.xml添加此颜色:<color name="app_color_theme_4">#36C8F4</color>


 MainActivity.class
private void initTopBar() {
        mTopBar.setBackgroundColor(ContextCompat.getColor(this, R.color.app_color_theme_4));
        mTopBar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
                overridePendingTransition(R.anim.slide_still, R.anim.slide_out_right);
            }
        });

        mTopBar.setTitle("沉浸式状态栏示例");
    }

colors.xml 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#D81B60</color>
    <color name="app_color_theme_4">#36C8F4</color>
</resources>

最终运行效果如文章开关图片。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QMUI 学习一: 入门,如何添加QMUI框架到 android项目 ,并引入QMUI的主题Theme: 的相关文章

随机推荐

  • 思维导图软件 XMind 2022

    XMind是一个高级且易于使用的思维导图工具 它为您的想法提供了可视化支持 因此您可以更轻松地组织任务或与团队一起参加头脑风暴会议 使用这个易于使用的应用程序创建头脑风暴会议的思维导图 该应用程序包装在具有直观选项的用户友好界面中 XMin
  • 在自动驾驶的领域里面如何玩仿真 【1】 概述和写在前面的一些话

    在自动驾驶的领域里面如何玩sil仿真 1 写在前面的一些话 停了两年 很久没登录CSDN了 之前野心勃勃开的题目随着自己进入一家初创公司开始后就没有时间和精力去更新了 发现这两三年有很多人喜欢这几个都不算太监 甚至头都没有写完 的文章 不少
  • UI设计新手指南之什么是UI设计?

    最直观的 只要用手机 打开界面就会接触到 UI 设计 UI 设计是什么 它是指对软件人机交互 操作逻辑 界面美观的整体设计 UI设计的目的是创造出简单 直观 易于使用的界面 为用户提供良好的体验 随着移动互联网的兴起 UI设计越来越受到重视
  • SPI总线verilog hdl实现(1)SPI通信

    SPI总线传输只需要4根线就能完成 这四根线的作用分别如下 SCK Serial Clock SCK是串行时钟线 作用是Master向Slave传输时钟信号 控制数据交换的时机和速率 MOSI Master Out Slave in 在SP
  • Matlab深度学习笔记——深度学习工具箱说明

    本文是Rasmus Berg Palm发布在Github上的Deep learning toolbox的说明文件 作者对这个工具箱进行了详细的介绍 原文链接 https github com rasmusbergpalm DeepLearn
  • CSS行高line-height默认值normal以及line-height与盒子的关系

  • FindBugs作为eclipse的插件的使用

    目录 1 FindBugs是干嘛的 2 Eclipse如何安装FindBugs插件 3 Eclipse中如何使用FindBugs插件 注 本篇主要是讲FindBugsEclipse插件的使用
  • java连接多个mysql,JAVA:MySql:太多连接

    I think that my application is cursed debug goes where it wants and I don t know why Line by line debugging seems to ana
  • 【GOF23设计模式】_状态模式_UML状态图_酒店系统房间状态_线程对象状态切换JAVA250

    来源 http www bjsxt com 一 S03E250 01 GOF23设计模式 状态模式 UML状态图 酒店系统房间状态 线程对象状态切换 package com test state public interface State
  • 如何高效学习一门新技术

    如何高效学习一门新技术 最近着手学习WCF 举步维艰 故阅读了大量关于学习新技术方法的网页 最终整理如下 一共大家参考 对于这个较大的话题 我们分两个部分介绍 学习新技术的10个建议 和 学习新技术的具体行动 学习新技术的10个建议 尽管我
  • Python视频处理(1)——视频分镜头提取+视频处理

    目录 一 导出帧图像 二 判定相似度 1 均值哈希判定相似度 2 基于直方图相似度 三 视频处理 利用ffmpeg 1 截取视频1分钟 2 视频格式转换 3 多媒体格式转换 4 视频方向处理 5 其他命令代码整理 一 导出帧图像 将视频以帧
  • 关于mysql取余和取整的函数

    MySQL中整除和取余函数分别为 1 整除函数 DIV 或者 双斜杠 使用方法 SELECT 10 DIV 3 返回结果为 3 SELECT 10 3 返回结果为 3 2 取余函数 MOD 或者 百分号 使用方法 SELECT MOD 10
  • loop设备模拟nvme设备

    加载 nvme loop内核模块 需要内核支持 或者自己编译 nvme loop 相关模块 sudo modprobe nvme loop 生成 loop 文件 dd if dev zero of path to nvme fs bs 1M
  • Jenkins ——The server rejected the connection

    启动agent时 报如下错误 信息 Protocol JNLP4 connect encountered an unexpected exception java util concurrent ExecutionException org
  • HTK语音识别中的决策树

    1 为什么需要决策树 我们在使用HTK进行语音识别模型训练的过程中 首先进行的是单音素 单个高斯的模型训练 抛开单个高斯不说 单音素模型本身有很大缺点 没有考虑到本音素前后音素的发音对本音素的影响 比如 同样是一个音素iy 如果它前面的音素
  • 你好,面试官-秋招面经C++持续更新

    C 指针和引用的区别 指针常量和常量指针的区别 sizeof 和 strlen 的区别 const关键字 static关键字 C 中struct和class的区别 new malloc和deete free的区别 宏定义和typedef区别
  • C1 ARMv7-M Debug

    C1 1 Introduction to ARMv7 M debug This section describes the debug architecture for the ARMv7 M architecture profile Th
  • python消消乐游戏界面的实现:

    一 环境介绍 1 Python 版本 Python 消消乐游戏可以在 Python 2 7 和 Python 3 x 版本中运行 2 Pygame 模块 Python 消消乐游戏需要使用 Pygame 模块来实现游戏界面和图形绘制等功能 如
  • DP线和HDMI线区别,优缺点,传输显示器图像速率

    参考DP接口与HDMI接口各有什么优势 哪个更好 资料来源于网络 仅供参考 最近在x宝上买显示器的线 看到各种hdmi dp版本的线 2 0 dp1 4 4k 8k typec转三口hdmi 可把我看昏了 在网上收集了一些资料用于总结 以及
  • QMUI 学习一: 入门,如何添加QMUI框架到 android项目 ,并引入QMUI的主题Theme:

    用是最新的Android Studio 3 6 x的 下了新的QMUI Demo参考学习UI 先上效果图 如何添加QMUI框架并引用它的主题 1 添加框架 在app gradle里面添加依赖 implementation com qmuit