自定义View控件流程是怎样的?(1),小程序FMP优化实录

HarmonyOS鸿蒙开发:自定义View与关键技术详解
  • 自定义的View是继承于View,当然如要自定义的View拥有某些Android已经提供的控件功能,可直接继承于已经提供的控件。
  • 重写构造方法
  • Xxx(Context context)
  • Xxx(Context context, AttributeSet attrs)
  • Xxx(Context context, AttributeSet attrs, int defStyleAttr)
  • 定义自定义属性
  • 自定义属性通常写在res/values/attrs.xml文件中。声明自定义属性,都属于styleable,一般styleable的name和自定义控件的类名一样。
  • 获取自定义属性
  • 当在xml中创建一个view时,所有在xml中声明的属性都会被传入到view的构造方法中的AttributeSet类型的参数当中。
  • 通过调用Context的obtainStyledAttributes()方法返回一个TypedArray对象。然后直接用TypedArray对象获取自定义属性的值。
  • TypedArray对象是共享的资源,因此在获取完值之后必须要调用recycle()方法来回收。

测量View(Measure)

  • 测量
  • 一个View在展示时是有宽和高,测量View就是为了能够让自定义的控件能够根据各种不同的情况以合适的宽高去展示。测量就必须要提到onMeasure方法。onMeasure方法是一个view确定宽高的地方。
  • 重写onMeasure的固定伪代码写法:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measureWidth = measure(widthMeasureSpec, true);
int measureHeight = measure(heightMeasureSpec, false);
setMeasuredDimension(measureWidth, measureHeight);
}

  • 计算出height和width之后在onMeasure中要调用setMeasuredDimension()方法。否则会出现运行时异常。
  • 计算一些自定义控件需要的值 onSizeChange()
  • onSizeChange() 方法在view第一次被指定了大小值、或者view的大小发生改变时会被调用。

绘制View(Draw)

  • 自定义控件被创建并且测量代码写好后,接下来就调用onDraw()来绘制View
  • onDraw方法包含一个Canvas叫做画布的参数,onDraw()简单来说就两点:Canvas决定要去画什么;Paint决定怎么画
  • Canvas提供了画线方法,Paint就来决定线的颜色。Canvas提供了画矩形,Paint又可以决定让矩形是空心还是实心。
  • 在onDraw方法中开始绘制之前
  • 画笔Paint对象信息要初始化完毕。因为View的重新绘制是比较频繁的,可能多次调用onDraw,所以初始化的代码不应该放在onDraw方法里。
  • Paint画笔
  • 在绘图过程中起到了极其重要的作用,画笔主要保存颜色,样式等绘制信息,指定如何绘制文本和图形,画笔对象有很多设置方法,大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关。
  • Canvas画布
  • 当调整好画笔之后,需要绘制到画布上,这就得用Canvas类。Canvas画布可以绘制任何东西。还需要设置一些关于画布的属性,比如,画布的颜色、尺寸等。
  • 常见绘制操作有哪些
  • drawRect,drawRoundRect,绘制矩形
  • drawOval,drawCircle,drawArc:绘制椭圆,圆,以及圆弧
  • drawText:绘制文本
  • drawBitmap:绘制图片
  • Rect和RectF介绍和区别
  • Rect的参数为int类型,而RectF的参数类型为float类型,从这一点上来看,RectF的精度更高一些,但是他们都是通过四个坐标参数来确定一个矩形的区域。

与用户进行交互

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

<think>嗯,用户这次想了解小程序开发的全流程管理方法,结合用户提到的需求,看来用户需要一份系统性的全流程管理指南。从用户引用的三篇参考来看,用户特别关注流程的系统性和可控性。用户可能是一名项目经理或开发负责人,需要统筹整个小程序的生命周期。ta特意提到了"全流程管理"而非单纯技术开发,说明关注点更偏向于如何高效组织团队、控制节点、保障质量。从引用材料看,用户已掌握了基础注册和技术选型知识,但缺少全局视角的方法论。考虑到当前移动开发领域的特点,小程序开发特别需要敏捷管理+文档规范化结合。准备将流程划分为5个阶段12个核心节点,其中用户可能最需要关注的是版本控制和灰度发布部分——这是小程序的特性所在。在方案设计时,需要平衡详细性和可操作性。比如在里程碑设计部分给出具体周期比例(如设计占20%),在文档清单部分列举必备文档类型(PRD/UI标注图等)。风险防控要针对小程序特色,比如提到微信审核规则这个关键风险点。准备在质量保障环节强调自动化测试,因为小程序迭代速度快,手动测试容易成为瓶颈。在效能指标设计时侧重CI流水线执行率,这个是团队技术成熟度的关键观察点。</think> 以下是小程序开发**全流程管理指南**,涵盖需求规划到发布运维的6大阶段及20+关键控制点,结合微信生态特点提供可落地的管理框架: --- ### **一、战略规划阶段(占周期15%)** 1. **需求定义** - 用`KANO模型`区分基础需求/期望需求/兴奋型需求 - 输出:需求矩阵文档(含优先级排序) *例:电商小程序需优先保证支付流程(基础需求),评论功能(期望需求),AR试妆(兴奋需求)* 2. **技术选型决策树** ```mermaid graph TD A[业务类型] --> B{是否需要3D交互?} B -->|是| C[选用Cocos/Three.js] B -->|否| D{是否需要复杂状态管理?} D -->|是| E[选用Taro+Redux] D -->|否| F[原生MINA框架] ``` --- ### **二、开发实施阶段(占周期35%)** #### 关键管理工具 | 环节 | 推荐工具 | 监控指标 | |------------|------------------------|-------------------| | 代码管理 | GitLab + MR机制 | 代码重复率<15% | | 自动化测试 | Jest + Puppeteer | 用例覆盖率≥85% | | 持续集成 | Jenkins+微信CI插件 | 构建失败率<5% | #### 微信生态特别注意事项 1. **权限管理矩阵** ```csv 角色,开发权限,体验权限,审核权限 产品经理,查看,✅,❌ 开发工程师,✅,✅,❌ 运维管理员,✅,✅,✅ ``` --- ### **三、测试验收阶段(占周期20%)** **分层测试策略** 1. **单元测试**:工具库使用Jest,核心模块覆盖率100% 2. **兼容测试**:覆盖微信客户端版本8.0.16+,重点测试iOS/Android差异 3. **安全测试**: - 防XSS注入:所有`<text>`节点强制转义 - 数据加密:敏感接口启用AES-256-GCM 4. **性能基线**: - 冷启动时长≤1200ms - 页面渲染完成FMP≤800ms --- ### **四、发布部署阶段(占周期15%)** #### 微信审核加速技巧 ```diff + 提前准备《内容安全承诺书》盖章扫描件 + 敏感功能(如支付)录制操作视频附在备注 - 避免周五下午提交(审核队列积压) ``` #### 灰度发布策略 ```python def gray_release(user_list): # 首批5%企业微信内部用户 if user in internal_users: return True # 次批10%种子用户 elif user.user_id[-2:] < '0A': return True # 全量发布 else: return False ``` --- ### **五、运维监控阶段(占周期10%)** #### 核心监控仪表盘 1. **异常捕获** - 启用微信`wx.reportMonitor()`实时上报JS错误 - 关键接口错误率阈值:≥1%时触发告警 2. **业务健康度** ```mermaid pie title 异常分布分析 “网络超时” : 42 “JSON解析错误” : 31 “第三方API失败” : 27 ``` --- ### **六、迭代优化阶段(占周期5%)** **A/B测试实施流程**: 1. 通过`wx.getSystemInfo()`获取设备参数划分用户群 2. 使用微信云开发数据库进行实验数据隔离 3. 决策规则: $$p=\frac{1}{1+e^{-(0.5*\Delta转化率-0.2*\Delta停留时长)}}>0.65$$ --- **风险管理清单**(高频失效场景): ⚠️ 微信登录会话失效 → 实现`静默续期机制` ⚠️ 审核驳回代码冗余 → 配置`Tree-Shaking`压缩 ⚠️ 支付掉单 → 增加`补偿查询接口` > 流程管理本质是:**规划阶段做厚文档,开发阶段做薄沟通,运维阶段做精数据**。建议每阶段举行"三方确认会"(产品+技术+运营),用微信文档同步会议纪要[^1][^2][^3]。 --- **
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值