🎨 微信Hook UI组件说明文档
本文档详细介绍了项目中所有自定义UI组件的作用、功能和使用方法。
📋 目录
🔧 核心组件
CustomLayoutInflater
路径: com.xiaojieyahu.myapplication.hook.ui.CustomLayoutInflater
作用: 自定义XML布局解析器,负责将XML布局文件解析为Android视图
- 支持解析标准Android组件(LinearLayout、RelativeLayout、TextView等)
- 支持解析自定义组件(UI、AvatarView、Image等)
- 自动处理布局参数和属性设置
- 支持相对定位和margin属性
核心功能:
- XML到View的转换
- 属性解析和应用
- 布局参数自动适配
- 错误处理和日志记录
🎨 UI容器组件
UI
路径: com.xiaojieyahu.myapplication.hook.ui.UI
作用: 自定义容器组件,主要用于实现圆角效果
- 通过
android:tag
属性设置圆角参数 - 格式:
左上{数值}右上{数值}左下{数值}右下{数值}
- 自动应用圆角背景drawable
使用场景:
- 卡片式布局
- 圆角容器
- 背景装饰
示例:
<com.xiaojieyahu.myapplication.hook.ui.UI
android:tag="左上15右上15左下15右下15"
android:background="#FFFFFFFF"
android:layout_width="320dp"
android:layout_height="wrap_content">
<!-- 子视图 -->
</com.xiaojieyahu.myapplication.hook.ui.UI>
📝 文本组件
WeChatNameTextView
路径: com.xiaojieyahu.myapplication.hook.ui.WeChatNameTextView
作用: 显示微信用户信息的文本组件
- 通过
android:tag
属性指定显示类型 - 自动获取并显示对应的用户信息
支持的显示类型:
nick_name
: 用户昵称alias
: 用户别名/备注email
: 邮箱地址mobile
: 手机号码username
: 微信号
示例:
<com.xiaojieyahu.myapplication.hook.ui.WeChatNameTextView
android:textSize="18sp"
android:textColor="#FF2C3E50"
android:tag="nick_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
HitokotoTextView
路径: com.xiaojieyahu.myapplication.hook.ui.HitokotoTextView
别名: com.xiaojieyahu.myapplication.hook.ui.text
作用: 显示随机一言的文本组件
- 自动获取网络上的随机名言
- 支持多种一言API
- 自动刷新和缓存
示例:
<com.xiaojieyahu.myapplication.hook.ui.text
android:textSize="12sp"
android:textColor="#FF95A5A6"
android:tag="随机一言"
android:layout_width="180dp"
android:layout_height="wrap_content" />
🖼️ 图片组件
Image
路径: com.xiaojieyahu.myapplication.hook.ui.Image
作用: 自定义图片视图组件
- 从指定目录加载图片文件
- 支持多种缩放模式
- 自动处理图片缓存和优化
图片目录: /data/user/0/com.tencent.mm/files/hook_dialog_config/img/
支持的ScaleType:
center
: 居中显示centerCrop
: 居中裁剪(充满容器)centerInside
: 居中适应fitCenter
: 适应中心fitXY
: 拉伸充满
示例:
<com.xiaojieyahu.myapplication.hook.ui.Image
android:tag="banck.png"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="match_parent" />
AvatarView
路径: com.xiaojieyahu.myapplication.hook.ui.AvatarView
作用: 微信头像显示组件
- 自动获取用户最新头像
- 支持头像缓存和更新
- 圆形头像显示效果
示例:
<com.xiaojieyahu.myapplication.hook.AvatarView
android:layout_width="80dp"
android:layout_height="80dp" />
🔘 交互组件
WeChatNavigationButton
路径: com.xiaojieyahu.myapplication.hook.ui.WeChatNavigationButton
别名: com.xiaojieyahu.myapplication.hook.ui.SettingActivity
作用: 功能导航按钮组件
- 通过
android:tag
属性设置功能类型 - 自动处理点击事件和页面跳转
- 支持多种微信功能页面
支持的功能类型:
设置
: 微信设置页面服务
: 服务页面收藏
: 收藏页面朋友圈
: 朋友圈页面视频号
: 视频号页面表情
: 表情管理页面
示例:
<com.xiaojieyahu.myapplication.hook.ui.SettingActivity
android:tag="设置"
android:textColor="#FFFFFFFF"
android:textSize="14sp"
android:background="#FF3498DB"
android:layout_width="100dp"
android:layout_height="40dp" />
🔧 管理器组件
ImageManager
路径: com.xiaojieyahu.myapplication.hook.manager.ImageManager
作用: 图片资源管理器
- 管理图片文件的加载和缓存
- 检查图片文件是否存在
- 提供图片文件列表功能
WeChatAvatarManager
路径: com.xiaojieyahu.myapplication.hook.manager.WeChatAvatarManager
作用: 微信头像管理器
- 获取用户头像信息
- 处理头像缓存和更新
- 头像格式转换和优化
WeChatNameManager
路径: com.xiaojieyahu.myapplication.hook.manager.WeChatNameManager
作用: 微信用户信息管理器
- 获取用户各种信息(昵称、微信号等)
- 信息缓存和同步
- 数据格式化和处理
⚙️ 配置组件
DialogConfigManager
路径: com.xiaojieyahu.myapplication.hook.config.DialogConfigManager
作用: 对话框配置管理器
- 管理XML配置文件的加载
- 处理配置文件的解析和应用
- 提供配置更新和刷新功能
配置文件路径: /data/user/0/com.tencent.mm/files/hook_dialog_config/dialog_config.xml
📱 使用示例
完整的UI布局示例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#FFF5F7FA"
android:padding="40dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 用户信息卡片 -->
<com.xiaojieyahu.myapplication.hook.ui.UI
android:tag="左上15右上15左下15右下15"
android:background="#FFFFFFFF"
android:layout_width="320dp"
android:layout_height="wrap_content"
android:padding="20dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- 头像 -->
<com.xiaojieyahu.myapplication.hook.ui.AvatarView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_margin="10dp" />
<!-- 用户信息 -->
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="15dp">
<com.xiaojieyahu.myapplication.hook.ui.WeChatNameTextView
android:tag="nick_name"
android:textSize="18sp"
android:textColor="#FF2C3E50"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.xiaojieyahu.myapplication.hook.ui.text
android:tag="随机一言"
android:textSize="12sp"
android:textColor="#FF95A5A6"
android:layout_width="180dp"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</com.xiaojieyahu.myapplication.hook.ui.UI>
<!-- 功能按钮卡片 -->
<com.xiaojieyahu.myapplication.hook.ui.UI
android:tag="左上15右上15左下15右下15"
android:background="#FFFFFFFF"
android:layout_width="320dp"
android:layout_height="wrap_content"
android:padding="20dp">
<com.xiaojieyahu.myapplication.hook.ui.SettingActivity
android:tag="设置"
android:background="#FF3498DB"
android:textColor="#FFFFFFFF"
android:textSize="14sp"
android:layout_width="280dp"
android:layout_height="40dp"
android:layout_margin="8dp" />
</com.xiaojieyahu.myapplication.hook.ui.UI>
</LinearLayout>
🎯 最佳实践
1. 圆角设计
- 使用
UI
组件包装需要圆角的元素 - 统一使用相同的圆角值保持一致性
- 推荐值:
左上15右上15左下15右下15
2. 颜色搭配
- 背景色:
#FFF5F7FA
(淡蓝灰) - 卡片背景:
#FFFFFFFF
(白色) - 主要文字:
#FF2C3E50
(深灰) - 次要文字:
#FF7F8C8D
(中灰)
3. 尺寸规范
- 卡片宽度:320dp
- 按钮高度:40dp
- 头像尺寸:80x80dp
- 间距:15-20dp
4. 组件命名
- 使用完整的包名路径
- 保持命名的一致性
- 注意别名的使用
🚀 扩展开发
如需添加新的自定义组件:
- 在对应的包下创建新的类
- 在
CustomLayoutInflater
中添加解析支持 - 更新
isMatchingTagName
和getViewTagName
方法 - 编写对应的属性解析逻辑
- 更新本文档
文档版本:1.0
最后更新:2025年1月