首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡

【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡

原创
作者头像
卓伊凡
发布2025-09-15 11:14:19
发布2025-09-15 11:14:19
7100
代码可运行
举报
运行总次数:0
代码可运行

【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡

引言

原生项目复杂就复杂于就算一个颜色的改动可能都比较麻烦,不像普通web项目或者vue项目,其次原生项目安卓Android的环境配置是很复杂的,很多人 第一步可以搞一周 甚至一个月都搞不成功,再次之前说了可以用trae辅助我们编程,但是真正的开发和调试还是得Android studio 离开Android studio 原生安卓项目也是没法运行的,至少trae满足不了,vs要满足也比较麻烦,本篇改颜色和主页图标,本项目代码 毫不夸张的说 就是WhatsApp的初期代码,历史大概有15年了。

项目技术栈

优雅草蜻蜓I即时通讯水银版 - 技术栈列表

概述:本项目是一个基于微服务架构的现代即时通讯解决方案。2025年8月进行了大规模技术升级与重构,并于8-9月期间集中进行兼容性调整与Bug修复,旨在提升系统稳定性、可维护性和未来扩展性。


一、 移动客户端 (Android)
  • 开发语言: Java
  • 开发模式: 原生开发
  • 兼容性底座: 最低支持 Android API 5 (Android 5.0)
  • 核心框架升级:
    • 项目已从原生的 Android Support 库全面升级到 AndroidX,以获得更好的性能和维护性。
  • 推送集成:
    • 集成 极光推送 (JPush) SDK,用于处理应用在后台或进程被杀时的消息离线推送。

二、 服务端 (Backend)
  • 核心语言: Java
  • 主要框架: Spring Boot
    • 用于构建和编排所有业务逻辑和业务流程,提供RESTful API接口,是连接各个微服务的核心枢纽。
  • JDK 版本:
    • 当前版本: JDK 1.8
    • 未来计划: 已有明确计划升级至 JDK 17(因时间安排暂未执行,旨在获得新的语言特性和性能提升)。

三、 微服务与基础设施 (Microservices & Infrastructure)

本次升级的核心是将单体服务拆解为独立、可扩展的微服务。

  1. 即时通讯服务:
    • 协议: XMPP (Extensible Messaging and Presence Protocol)
    • 实现: 独立部署的 XMPP 服务,负责最核心的点对点、群组聊天等实时消息分发。
  2. 消息回执服务:
    • 实现: Tigase Server 7.1.3
    • 职责: 专门处理消息的已发送、已送达、已阅读等状态回执,确保消息的可达性。
  3. 消息队列服务:
    • 组件: RocketMQ 4.3.2 (rocketmq-all-4.3.2)
    • 职责: 处理服务间的异步通信、流量削峰、任务队列等,保证系统的高可用和高性能。
  4. 上传服务:
    • 实现: 独立制作的 Upload 服务
    • 职责: 专门处理图片、文件、语音等附件的上传、存储和管理,与主业务逻辑解耦。
  5. 推送服务:
    • 实现: 独立制作的 Push 服务
    • 集成: 内部封装了 极光推送 SDK,负责将消息通过系统通道推送给Android客户端。
  6. 缓存与队列服务:
    • 组件: Redis
    • 职责: 用作高速缓存,提升访问速度;同时处理临时消息队列和会话状态存储。

四、 数据存储 (Data Storage)
  1. 主数据库:
    • 组件: MongoDB
    • 版本升级: 已从旧的 3.4.0 成功升级至 4.0 版本。
    • 用途: 存储非结构化的聊天记录、用户动态、群组信息等海量数据,利用其灵活的Schema特性适应IM业务的快速迭代。
  2. 关系型数据库:
    • 可能选项: MySQL8.0 下一步做改进的。
    • 可能用途: 存储用户账户、好友关系、群组列表等结构化数据。

总结与技术亮点
  • 架构现代化: 从可能存在的单体架构成功转型为微服务架构,服务间通过 RocketMQ 和 HTTP API 进行通信,解耦彻底。
  • 技术债务清理: 积极处理历史技术债务,包括 AndroidX 迁移MongoDB 大版本升级,为未来开发铺平道路。
  • 专业化分工: 每个核心功能(通讯、上传、推送、回执)都由独立服务承担,职责单一,更易于扩展、部署和故障排查。
  • 成熟组件选型: 选用 RocketMQ, Redis, Tigase 等经过大规模实践验证的中间件,保证了系统底层的稳定性和可靠性。
  • 明确的发展规划: 已有清晰的 JDK 17 升级计划,显示出团队对技术演进的前瞻性。

详细步骤解析

这是我们的整体目标

这是现目前的样子,差别还是不算大,因为我们第一版设计为了时间考虑,没有改布局,只是对整体配色整体图标进行了设计

先从登陆页面来,需要搜索与登录注册相关的Activity类,找到首页的布局文件,然后修改按钮的背景色为#FB506B。

找到了activity_splash.xml中包含注册按钮的引用,ID为select_register_btn,背景使用了back_elipse_white_line。让我查看完整的布局文件和相关的drawable资源文件,以便修改按钮的背景色。

这是整体布局配色,我们修改了以后

  1. 1. 在drawable目录下创建了新的背景资源文件 back_elipse_fb506b.xml ,设置了#FB506B的背景色
  2. 2. 更新了启动页布局文件 activity_splash.xml ,将登录和注册按钮的background属性从原来的@drawable/back_elipse_white_line修改为新创建的@drawable/back_elipse_fb506b 现在当应用启动时,用户将看到红色(#FB506B)背景的登录和注册按钮。

但是发现并没有什么变化,因此这个改动无效。

于是开始从登陆页面 找起来

查看LoginNewActivity的布局文件,因为根据之前的代码分析,应用实际上会跳转到LoginNewActivity而不是显示SplashActivity上的按钮。

首先要从登陆这张页面来看才能看到问题所在。

找到了实际显示的登录界面activity_login_new.xml,登录按钮使用了BossGreenBtn样式。查看styles.xml文件来找到这个样式的定义,以便修改背景色。

styles.xml中BossGreenBtn样式的定义,它使用了bg_btn_green_splash作为背景。查看这个drawable资源文件,以便修改其背景色为#FB506B。

bg_btn_green_splash是一个selector,引用了多个状态的drawable资源。

找到了登录按钮背景色blue5的定义(#0076FE)。现在需要将其修改为#FB506B。这个修改会影响所有使用blue5的地方,包括登录按钮。

为了确保在夜间模式下按钮颜色也正确显示,我需要检查并修改values-night目录下的colors.xml文件中是否也有blue5的定义。

在values-night目录的colors.xml文件中没有找到blue5的定义,所以夜间模式会使用values目录下的定义,我已经修改了那里的颜色。现在我需要确认注册按钮的背景色设置,让我搜索相关的UI元素。

确认blue5颜色已成功修改为#FB506B(位于colors.xml第204行)。现在我需要检查登录按钮使用的BossGreenBtn样式完整定义,以确保颜色设置正确。

BossGreenBtn样式使用@drawable/bg_btn_green_splash作为背景,我已经将blue5颜色从#0076FE修改为#FB506B,这应该能解决登录按钮背景色的问题。让我再检查bg_btn_green_end.xml文件确保所有状态都正确。

需要再次检查bg_btn_green_splash.xml文件的内容,确认它引用的背景资源配置。

修改步骤如下:

  1. 1. 首先我在drawable目录创建了back_elipse_fb506b.xml资源文件,设置了#FB506B背景色
  2. 2. 更新了activity_splash.xml文件,将登录按钮和注册按钮的background属性从back_elipse_white_line修改为新创建的资源
  3. 3. 发现activity_splash.xml中的按钮是隐藏状态,实际显示的登录按钮使用BossGreenBtn样式
  4. 4. 检查了BossGreenBtn样式的定义,它使用bg_btn_green_splash作为背景,该背景引用了bg_btn_green_nor、bg_btn_green_pre等drawable资源
  5. 5. 这些drawable资源使用blue5颜色作为填充色,我在values/colors.xml文件中将blue5颜色从#0076FE修改为#FB506B 通过这些修改,登录按钮的背景色已成功从蓝色更改为粉红色(#FB506B)。由于注册按钮在不同布局文件中以文本形式存在,其颜色需要单独修改文本颜色属性。

这是一座山一样的代码,而且 多个文件控制着布局,不过其实现实中真正很多大项目都是 山一样的代码。

看到多个布局文件中的注册按钮文本颜色是blue2(#5696F7),这可能是用户看到蓝色的原因。让我查看一下activity_login_new.xml的完整内容,确认实际的首页注册登录界面。

下一步我们改主页图标,但是底部图标涉及更换图标,那么就涉及资源问题

在Android项目中查看和整理图像资源,可以通过以下几种方式:

1. 在Android Studio中查看图像资源

使用Resource Manager

  • 在Android Studio中,点击左侧的Resource Manager标签(或通过ViewTool WindowsResource Manager打开)
  • 选择Drawable分类即可查看所有图像资源
  • 可以按密度、文件名等进行筛选和排序

在Project视图中查看

  • Project面板中展开app/src/main/res目录
  • 查看各个drawable文件夹:
    • drawable/ - 默认密度资源
    • drawable-hdpi/ - 高密度屏幕资源
    • drawable-mdpi/ - 中密度屏幕资源
    • drawable-xhdpi/ - 超高密度屏幕资源
    • drawable-xxhdpi/ - 超超高密度屏幕资源
    • drawable-xxxhdpi/ - 超超超高密度屏幕资源

2. 整理图像资源的建议

按密度分类

确保图像资源按照不同的屏幕密度正确放置在对应的文件夹中

按功能命名

使用有意义的命名规范,例如:

  • ic_ 前缀表示图标(如 ic_launcher.png
  • bg_ 前缀表示背景(如 bg_button_normal.png
  • img_ 前缀表示图片(如 img_avatar_default.png

清理未使用的资源

  • 使用Android Studio的RefactorRemove Unused Resources功能
  • 或使用Lint工具检查未使用的资源

3. 查看特定模块的图像资源

根据你提供的上下文,你的项目包含多个模块(包括gallerylibrary),需要分别查看每个模块的资源:

代码语言:javascript
代码运行次数:0
运行
复制
gallerylibrary/src/main/res/
├── drawable/
├── drawable-hdpi/
├── drawable-mdpi/
├── drawable-xhdpi/
├── drawable-xxhdpi/
└── drawable-xxxhdpi/

可以通过切换Project视图中的模块来查看不同模块的图像资源。

这样就可以全面地查看和整理项目中的所有图像资源了。

当我打开了资源管理器,发现没有显示出对应的资源就明白这个问题肯定不简单了,可能也是由于项目老旧原因,本项目代码 毫不夸张的说 就是WhatsApp的初期代码,历史大概有15年了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 项目技术栈
    • 优雅草蜻蜓I即时通讯水银版 - 技术栈列表
    • 详细步骤解析
    • 1. 在Android Studio中查看图像资源
      • 使用Resource Manager
      • 在Project视图中查看
    • 2. 整理图像资源的建议
      • 按密度分类
      • 按功能命名
      • 清理未使用的资源
    • 3. 查看特定模块的图像资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档