【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
本次二开布局没有变,但是下一次整体布局会有变,不过本次开发发现朋友圈跳转功能的流程步骤也做了一定的变化。原生项目复杂就复杂于就算一个颜色的改动可能都比较麻烦,不像普通web项目或者vue项目,其次原生项目安卓Android的环境配置是很复杂的,很多人 第一步可以搞一周 甚至一个月都搞不成功,再次之前说了可以用trae辅助我们编程,但是真正的开发和调试还是得Android studio 离开Android studio 原生安卓项目也是没法运行的,至少trae满足不了,vs要满足也比较麻烦,本篇改颜色和主页图标,本项目代码 毫不夸张的说 就是WhatsApp的初期代码,历史大概有15年了。
本篇【05】有一定的布局调整,按道理是UI没理解意思,毕竟第一次设计的版是预算不够的设计版,是不改布局的情况下的。
概述:本项目是一个基于微服务架构的现代即时通讯解决方案。2025年8月进行了大规模技术升级与重构,并于8-9月期间集中进行兼容性调整与Bug修复,旨在提升系统稳定性、可维护性和未来扩展性。
本次升级的核心是将单体服务拆解为独立、可扩展的微服务。
消息页面这几个选项目前是 前端布局:媒体对象(Media Object)布局
这种布局在前端开发中被称为媒体对象(Media Object)布局,由Nicole Sullivan在2010年提出。它是一种常见且实用的模式,特别适合展示图文内容列表。
这个布局知识可以单独去搜索相关前端知识,
我们需要看到目前的布局
查看popu_message.xml文件的内容,了解当前四个图标的布局结构,以便进行媒体对象布局的调整。
skWeiChatBaidu\src\main\res\layout\popu_message.xml 1 - 200
将popu_message.xml文件中的四个图标按钮从当前的混合布局调整为媒体对象(Media Object)布局,实现左侧图标、右侧文字的垂直排列,共4行且保持等高度。
已成功调整消息页面右上角按钮点击后显示的四个图标按钮的布局,将其修改为媒体对象(Media Object)布局。具体修改如下:
修改后的代码为
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:background="@drawable/rect_white"
android:orientation="vertical">
<!-- 第一行:收付款 -->
<LinearLayout
android:id="@+id/receipt_payment"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="25dp"
android:paddingRight="25dp"
android:paddingTop="10dp"
android:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_erweima_shoukuan" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="@string/hint570"
android:textColor="@color/color_33"
android:textSize="@dimen/sp_12_text_size" />
</LinearLayout>
<!-- 第二行:扫一扫 -->
<LinearLayout
android:id="@+id/scanning"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="25dp"
android:paddingRight="25dp">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_saoyisao" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="@string/scanning"
android:textColor="@color/color_33"
android:textSize="@dimen/sp_12_text_size" />
</LinearLayout>
<!-- 第三行:加好友 -->
<LinearLayout
android:id="@+id/add_friends"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="25dp"
android:paddingRight="25dp">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_add_haoyou" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="@string/add_friends"
android:textColor="@color/color_33"
android:textSize="@dimen/sp_12_text_size" />
</LinearLayout>
<!-- 第四行:发起群聊 -->
<LinearLayout
android:id="@+id/create_group"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingLeft="25dp"
android:paddingRight="25dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_chuangjian_qunliao" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="@string/create_group"
android:textColor="@color/color_33"
android:textSize="@dimen/sp_12_text_size" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
这是一个Android的布局文件,定义了一个垂直方向的菜单界面
LinearLayout
作为根容器android:orientation="vertical"
)wrap_content
,即根据内容自适应大小LinearLayout
作为主要内容区域android:layout_marginEnd="12dp"
)android:background="@drawable/rect_white"
)@mipmap/icon_erweima_shoukuan
二维码收款图标@string/hint570
字符串资源@mipmap/icon_saoyisao
@string/scanning
字符串资源@mipmap/icon_add_haoyou
@string/add_friends
字符串资源@mipmap/icon_chuangjian_qunliao
@string/create_group
字符串资源LinearLayout
都设置了ID,便于在代码中绑定点击事件wrap_content
使布局能自适应不同屏幕尺寸这是一个典型的功能菜单布局,常见于聊天应用的快捷操作面板。
非常的完美,这个布局做到了应该需要的效果。
接下来修改按钮样式,这个也是比较特殊的一个修改
看起来很简单,其实差距还很大,
一个是有箭头号一个是没有。
搜索创建群聊页面的布局文件,以便找到需要修改的圆形按钮。
toolName: search_by_regex
status: success
query: activity_create_group|create_group_layout|layout_create_group
尝试使用更广泛的搜索词查找创建群聊页面的布局文件。
toolName: search_by_regex
status: success
query: create.group|group.create
搜索创建群聊页面的Java类文件,以便找到对应的布局文件引用。
toolName: search_codebase
status: success
query: 创建群聊 Activity Fragment
搜索与创建群组相关的字符串资源,以便找到对应的布局文件。
toolName: search_by_regex
status: success
query: 创建群组|群名称|群头像|立即创建
搜索创建群组相关的字符串资源ID在布局文件中的引用,以找到对应的页面布局。
toolName: search_by_regex
status: success
query: hint668|hint669|hint672|hint61
找到了activitity_cj_qunzu.xml文件,其中引用了创建群组相关的所有字符串资源。现在查看这个文件内容,确认并准备修改立即创建按钮的样式。
toolName: view_files
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\layout\activitity_cj_qunzu.xml
查看activitity_cj_qunzu.xml文件的完整内容,以确保理解整个布局结构,为修改立即创建按钮为圆形做准备。
toolName: view_files
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\layout\activitity_cj_qunzu.xml
查看BossGreenBtn样式的定义,了解当前立即创建按钮的样式属性,为修改为圆形按钮做准备。
toolName: search_by_regex
status: success
query: BossGreenBtn
查看values/styles.xml文件中BossGreenBtn样式的具体定义,了解当前按钮的样式属性,为修改为圆形按钮做准备。
toolName: view_files
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\values\styles.xml
查看当前按钮使用的背景drawable资源bg_btn_green_splash的定义,了解其样式属性,为创建圆形按钮做准备。
toolName: search_by_regex
status: success
query: bg_btn_green_splash
查看bg_btn_green_splash.xml文件的具体内容,了解当前按钮的背景drawable资源定义,为创建圆形按钮做准备。
toolName: view_files
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_splash.xml
查看bg_btn_green_nor.xml文件的具体内容,了解当前正常状态下按钮的背景样式,为创建圆形按钮做准备。
toolName: view_files
status: success

filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_nor.xml
查看bg_btn_green_pre.xml和bg_btn_green_end.xml文件的内容,了解按钮在不同状态下的背景样式,确保所有状态都能正确显示为圆形按钮。
toolName: view_files
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_pre.xml g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_end.xml
创建新的drawable资源文件bg_btn_green_circle_nor.xml,用于圆形按钮的正常状态。
toolName: write_to_file
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_circle_nor.xml
content: <?xml version=”1.0” encoding=”utf-8”?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="22dp" /> <solid android:color="@color/blue5" /> </shape>
创建新的drawable资源文件bg_btn_green_circle_pre.xml,用于圆形按钮的按下状态。
toolName: write_to_file
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_circle_pre.xml
content: <?xml version=”1.0” encoding=”utf-8”?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="22dp" /> <solid android:color="@color/blue5" /> </shape>
创建新的drawable资源文件bg_btn_green_circle_end.xml,用于圆形按钮的禁用状态。
toolName: write_to_file
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_circle_end.xml
content: <?xml version=”1.0” encoding=”utf-8”?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="22dp" /> <solid android:color="@color/grey" /> </shape>
创建新的drawable selector文件bg_btn_green_circle_splash.xml,整合圆形按钮的所有状态。
toolName: write_to_file
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\drawable\bg_btn_green_circle_splash.xml
content: <?xml version=”1.0” encoding=”utf-8”?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/bg_btn_green_circle_pre" android:state_pressed="true" /> <item android:drawable="@drawable/bg_btn_green_circle_pre" android:state_focused="true" /> <item android:drawable="@drawable/bg_btn_green_circle_end" android:state_enabled="false" /> <item android:drawable="@drawable/bg_btn_green_circle_nor" /> </selector>
在styles.xml文件中创建一个新的圆形按钮样式BossGreenBtnCircle,使用我们刚刚创建的圆形背景drawable资源。
toolName: edit_file_update
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\values\styles.xml
changes:
newStr: <style name="BossGreenBtn"> <item name="android:background">@drawable/bg_btn_green_splash</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">44dp</item> <item name="android:gravity">center</item> <item name="android:textColor">@color/white</item> <item name="android:textSize">@dimen/sp_15_text_size</item> </style>
<style name="BossGreenBtnCircle">
<item name="android:background">@drawable/bg_btn_green_circle_splash</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">44dp</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@color/white</item>
<item name="android:textSize">@dimen/sp_15_text_size</item>
</style>
oldStr: <style name="BossGreenBtn"> <item name="android:background">@drawable/bg_btn_green_splash</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">44dp</item> <item name="android:gravity">center</item> <item name="android:textColor">@color/white</item> <item name="android:textSize">@dimen/sp_15_text_size</item> </style>
修改activitity_cj_qunzu.xml文件中的立即创建按钮,将其样式从BossGreenBtn改为BossGreenBtnCircle。
toolName: edit_file_update
status: success
filePath: g:\clone\2025qingting—android\skWeiChatBaidu\src\main\res\layout\activitity_cj_qunzu.xml
changes:
newStr: <LinearLayout android:id="@+id/sure_btn" style="@style/BossGreenBtnCircle" android:layout_height="44dp" android:layout_marginTop="50dp" android:layout_width="match_parent">
oldStr: <LinearLayout android:id="@+id/sure_btn" style="@style/BossGreenBtn" android:layout_height="44dp" android:layout_marginTop="50dp" android:layout_width="match_parent">
已完成将创建群聊页面中的”立即创建”按钮修改为圆形按钮形状的任务。主要修改内容包括:
现在创建群聊页面中的”立即创建”按钮已经变成了圆形按钮,符合参考图片中的设计要求。
现在我们看看
成功,现在进行下一步骤下一篇
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。