当前位置: 首页 > 工具软件 > QMUI Android > 使用案例 >

QMUI_Android从入门到放弃

卫兴邦
2023-12-01

前言

QMUI_Android是一个Android ui库

官网:https://qmuiteam.com/android/

github:https://github.com/Tencent/QMUI_Android

顺便推荐一个阅读github的神器:Octotree 

(需要翻墙) https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc/related

 

配置

qmui库

在jcenter()仓库中,直接引用即可

implementation 'com.qmuiteam:qmui:1.2.0'

修改res>values>styles.xml中theme的parent

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

配置arch

引入 

implementation com.qmuiteam:arch:0.3.1

在application类中初始化

自定义MyApplication类继承Application

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //初始化QMUISwipeBackActivityManager,否则点击屏幕时就程序就会崩溃
        QMUISwipeBackActivityManager.init(this);
    }

}

不要忘记修改配置文件

<application
        android:name="com.hh.waylightclient.MyApplication"
        ...
/>

补充知识

<selector></selector>

selector 为选择器标签,可以理解成状态列表。这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换。分为两种,一种Color-Selector 和Drawable-Selector。用法差不多,所以后文只介绍color-selector的用法。

用法

在res文件夹中新建color文件夹,新建color resource file

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/app_color_blue_disabled" android:state_enabled="false" />
    <item android:color="@color/app_color_blue_pressed" android:state_pressed="true" />
    <item android:color="@color/app_color_blue" />
</selector>

这段代码运行出来的结果就是,在一个按钮点击和释放时背景颜色会发生变化

在style.xml中的调用方法如下

<item name="qmui_round_btn_bg_color">@color/s_btn_blue_bg</item>

使用QMUI光速实现圆角与阴影

在qmui的demo中虽然貌似并没有一个控件直接带上了阴影,但有一个fragment讲解了qmui是怎样实现一个精确的阴影的,即通过alpha与elevation来实现对阴影的精确控制。但是其实对于qmui的使用者来说,完全没必要通过代码来设置圆角或阴影,因为我们的控件的圆角与阴影一旦设定好之后其实不太需要变化了。所以,我们只需要在布局文件中调用qmui提供的一些api就好啦。阴影相关api的介绍大家可以参考作者的技术博客:http://blog.cgsdream.org/2018/03/26/qmuilayout/

在布局文件调用方法如下(最后三行):

<com.qmuiteam.qmui.layout.QMUILinearLayout
        android:id="@id/username"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:background="@color/qmui_config_color_white"
        android:gravity="center"
        android:orientation="horizontal"
        app:qmui_borderColor="?attr/qmui_config_color_separator"
        app:qmui_outerNormalColor="?attr/qmui_config_color_background"
        app:qmui_showBorderOnlyBeforeL="true"
        app:qmui_shadowAlpha="0.15"
        app:qmui_shadowElevation="14dp"
        app:qmui_radius="4dp">

QMUI中fragment的用法

传统的activity中调用fragment的方法有两种,一种是直接在活动的布局文件中将fragment添加进去,但是这种方法如果你的fragment是继承自QMUI的fragment的话很有可能会发生布局错乱(呕,我也不知道为什么),所以我们只能采用第二种动态添加fragment的方法。但是由于我们使用的是QMUI定义的fragment类,所以在activity中调用的方法与用安卓fragment类时也有一点不同。

demo中所有的fragment都是继承自一个抽象类:BaseFragment,这个类又是继承自QMUIFragment。在activity中调用的方法如下:

        // 构造fragment实例,BaseFragment是自定义的一个类,是所有fragment的父类,详见demo
        BaseFragment fragment = new Fragment_Login();
        //调用fragment
        getSupportFragmentManager()
                .beginTransaction()
                .add(R.id.layout, fragment, fragment.getClass().getSimpleName())
                .addToBackStack(fragment.getClass().getSimpleName())
                .commit();

 

 类似资料: