乐于分享
好东西不私藏

Ruoyi-Android-App 首页配置多样化

Ruoyi-Android-App 首页配置多样化

🚀 RuoYi Android App 首页导航定制化方案全解析

🔥 项目简介

RuoYi Android App 是基于 Kotlin 开发的移动端解决方案,完美对接 RuoYi-Go、RuoYi-Vue、RuoYi-Cloud 三大后端版本!目前已落地登录、个人中心、工作台、资料编辑、头像 / 密码修改、常见问题、关于我们等核心功能,为企业级移动端开发提供开箱即用的基础能力。

🎨 首页导航核心特性

首页支持三种灵活的定制模式,兼顾默认体验、个性化样式和网络动态配置,满足不同场景的 UI 需求:

  • 模式 1:经典 Tab 样式(图文结合)
  • 模式 2:仿支付宝样式(纯图标展示)
  • 模式 3:网络动态配置(图标 / 颜色远程下发)

下面为你拆解首页导航的实现逻辑和配置方式:

一、核心布局结构(LinearLayout)

首页采用垂直布局拆分「内容区 + 底部导航栏」,保证布局层级清晰、适配全屏幕:

这样是普通的tab效果。

效果1

效果2

效果3

首页使用布局
<LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    <!-- 宽度占满屏幕 -->    android:layout_height="match_parent"   <!-- 高度占满屏幕 -->    android:orientation="vertical"         <!-- 垂直方向布局 -->    tools:context=".activity.MainActivity"> <!-- 关联主活动 -->    <!-- 页面内容区域(ViewPager) -->    <com.ruoyi.app.widget.NoScrollViewPager        android:id="@+id/vp_home_pager"        android:layout_width="match_parent"        android:layout_height="0px"         <!-- 高度由weight分配 -->        android:layout_weight="1" />        <!-- 占满剩余高度 -->    <!-- 底部导航栏(RecyclerView) -->    <androidx.recyclerview.widget.RecyclerView        android:id="@+id/rv_home_navigation"        android:layout_width="match_parent"        android:layout_height="55dp"        <!-- 导航栏固定高度55dp -->        android:background="@color/white"   <!-- 白色背景 -->        android:elevation="10dp"            <!-- 阴影效果提升立体感 -->        android:orientation="vertical"        app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" <!-- 网格布局 -->        app:spanCount="3"                   <!-- 3列分布(对应首页/工作台/我的) -->        tools:itemCount="3"                 <!-- 预览时显示3个item -->        tools:listitem="@layout/main_navigation_item" /> <!-- 导航项布局文件 --></LinearLayout>

二、导航数据初始化(Adapter 适配)

通过 Kotlin 简洁的语法初始化导航项数据,统一管理颜色、文字、图标资源:

// 初始化底部导航栏数据列表private val list = ArrayList<ButtomItemEntity>().apply {    // 1. 首页导航项    add(        ButtomItemEntity(            Constant.theme_default_color,  // 默认颜色(未选中)            Constant.theme_select_color,   // 选中颜色            Frame.getString(R.string.index_nav_index),  // 文字:首页            "",  // 预留字段(默认图标地址)            "",  // 预留字段(选中图标地址)            Frame.getDrawable(R.drawable.index_selector)  // 首页选择器资源        )    )    // 2. 工作台导航项    add(        ButtomItemEntity(            Constant.theme_default_color,  // 默认颜色(未选中)            Constant.theme_select_color,   // 选中颜色            Frame.getString(R.string.work_nav_index),  // 文字:工作台            "",  // 预留字段(默认图标地址)            "",  // 预留字段(选中图标地址)            Frame.getDrawable(R.drawable.work_selector)  // 工作台选择器资源        )    )    // 3. 我的导航项    add(        ButtomItemEntity(            Constant.theme_default_color,  // 默认颜色(未选中)            Constant.theme_select_color,   // 选中颜色            Frame.getString(R.string.mine_nav_index),  // 文字:我的            "",  // 预留字段(默认图标地址)            "",  // 预留字段(选中图标地址)            Frame.getDrawable(R.drawable.mine_selector)  // 我的选择器资源        )    )}

三、导航切换逻辑(页面联动)

点击导航项同步切换 ViewPager 页面,保证交互体验流畅:

/** * 底部导航项选中事件处理方法 * @param position 选中的导航项下标(0=首页,1=工作台,2=我的) * @return Boolean 是否处理了该选中事件 */override funonNavigationItemSelected(position: Int)Boolean {    return when (position) {        // 选中首页(0)、工作台(1)、我的(2)时触发        012 -> {            // 切换ViewPager到对应下标页面            binding.vpHomePager.currentItem = position            true  // 表示已处理该事件        }        // 其他下标(无匹配项)        else -> false  // 表示未处理该事件    }}
三种定制模式配置(核心亮点)

所有配置均在 Constant.kt 中一键切换,无需修改核心逻辑:

模式 1:默认经典样式(图文结合)

// 首页动态设置const val mainStyle = mainStyleDefault // 1 首页图片和文字 2 首页图片,仿照支付宝const val isPersonalization = false //首页个性化,从网络获取
也是默认模式
模式 2:第一个tab仿支付宝样式(纯图标)
// 首页动态设置const val mainStyle = mainStyleAlipay // 1 首页图片和文字 2 首页图片,仿照支付宝const val isPersonalization = false //首页个性化,从网络获取
想换掉图片自己自行替换即可。
模式 3:网络动态配置(远程下发)
// 首页动态设置const val mainStyle = mainStyleDefault // 1 首页图片和文字 2 首页图片,仿照支付宝const val isPersonalization = true //首页个性化,从网络获取
然后获取网络的格式
{  "code": 200,        // 接口状态码:200表示请求成功  "msg": "查询成功",   // 接口提示信息  "data": [           // 导航栏核心配置列表(共3个导航项)    {      "id": 1,                    // 导航项ID:首页      "name": "首页",             // 导航项名称      "defaultColor": "#A4A4A4",  // 未选中时文字/图标颜色      "selectColor": "#d81e06",   // 选中时文字/图标颜色(红色)      "defaultIcon": "https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App/raw/ui_1.1.0/api/icon/home.png",  // 未选中图标地址      "selectIcon": "https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App/raw/ui_1.1.0/api/icon/home_.png", // 选中图标地址      "drawable": null            // 本地图标资源(预留字段,暂未使用)    },    {      "id": 2,                    // 导航项ID:工作台      "name": "工作台",      "defaultColor": "#A4A4A4",      "selectColor": "#d81e06",      "defaultIcon": "https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App/raw/ui_1.1.0/api/icon/work.png",      "selectIcon": "https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App/raw/ui_1.1.0/api/icon/work_.png",      "drawable": null    },    {      "id": 3,                    // 导航项ID:我的      "name": "我的",      "defaultColor": "#A4A4A4",      "selectColor": "#d81e06",      "defaultIcon": "https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App/raw/ui_1.1.0/api/icon/mine.png",      "selectIcon": "https://gitee.com/OptimisticDevelopers/Ruoyi-Android-App/raw/ui_1.1.0/api/icon/mine_.png",      "drawable": null    }  ]}

四、Fragment 页面绑定

将首页、工作台、我的三个核心页面绑定到 ViewPager,完成内容载体初始化:

// 初始化ViewPager适配器,绑定3个核心页面FragmentpagerAdapter = FragmentPagerAdapter<Fragment>(this).apply {    // 添加首页Fragment(单例创建)    addFragment(HomeFragment.newInstance())    // 添加工作台Fragment(单例创建)    addFragment(WorkFragment.newInstance())    // 添加我的Fragment(单例创建)    addFragment(MineFragment.newInstance())    // 将适配器绑定到ViewPager控件    binding.vpHomePager.adapter = this}

💡 开发小贴士

  1. 所有样式常量集中在 Constant.kt,修改后无需重构页面逻辑,降低维护成本;
  2. 网络配置模式支持动态更新图标 / 颜色,无需发版即可调整 UI;
  3. Fragment 采用 newInstance() 单例创建,符合 Android 生命周期最佳实践;
  4. 导航栏使用 RecyclerView + 网格布局,可灵活扩展更多导航项(仅需调整 spanCount)。

🎯 总结

RuoYi Android App 的首页导航方案兼顾「易用性」和「扩展性」:

  • 基础层:通过 LinearLayout+ViewPager+RecyclerView 构建稳定的布局结构;
  • 适配层:支持三种样式一键切换,满足不同 UI 需求;
  • 扩展层:网络动态配置支持远程定制,适配企业级个性化场景。

到此结束,希望可以帮助到您。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Ruoyi-Android-App 首页配置多样化

评论 抢沙发

1 + 1 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮