1.Android åè§ãåå½¢ ImageView å®ç°
2.Echarts-ZRender源码分析(一)
Android åè§ãåå½¢ ImageView å®ç°
æ们è¦å®ç°çå¾çæ§ä»¶ç»§æ¿èª AppCompatImageView ï¼å®æ¯ ImageView çåç±»ï¼ä½æä¾äºæ´å¥½çå ¼å®¹æ§ï¼æ们å¨æ¤åºç¡ä¸æ·»å äºè¥å¹²èªå®ä¹çå±æ§åæ¹æ³ä»¥å®ç°æç»ç NiceImageView ï¼è¦å®åè§æè åå½¢çæ¾ç¤ºææï¼å°±æ¯å¯¹å¾çæ¾ç¤ºçå 容åºåè¿è¡âè£åªâï¼åªæ¾ç¤ºæå®çåºåå³å¯ãå¦ä½åå¢ï¼
ä¸ç§æ¯è¾ç´æ¥çåæ³æ¯è¿æ ·çï¼ç±äºå¾çæ¯è¢«ç»å¶å¨ç»å¸ä¸çï¼æä»¥ç¨ canvas ç clipPath() æ¹æ³å å°ç»å¸è£åªææå®å½¢ç¶ï¼è¿æ ·å°±è½è®©å¾çææå®å½¢ç¶æ¾ç¤ºäºï¼éæ° draw() æ¹æ³å³å¯ï¼
è¿æ ·ä½¿ç¨ src ã background å±æ§ç»ImageView设置æ¾ç¤ºçå¾çé½è½è¾¾å°é¢æçæ¾ç¤ºææãä½æ¯ç±äº clipPath() æ¹æ³ä¸æ¯ææé¯é½¿ï¼å¾çè¾¹ç¼ä¼æææ¾çæ¯ç³æï¼ä½éªå¹¶ä¸çæ³ï¼æ以éè¦å¯»æ¾å ¶å®æ¹æ³ã
å¦ä¸ç§æ¹æ³æ¯ä½¿ç¨å¾åç Alpha åæ模å¼ï¼å³
PorterDuffæ¥å®ç°ï¼ å®æ¹ææ¡£ ãè¿éæ们使ç¨å ¶ä¸çDST_IN模å¼ãæ´ä¸ªè¿ç¨å°±æ¯å ç»å¶ç®æ å¾åï¼ä¹å°±æ¯å¾çï¼åç»å¶åå¾åï¼å³ä¸ä¸ªåè§ç©å½¢æè åå½¢ï¼è¿æ ·æç»ç®æ å¾ååªæ¾ç¤ºååå¾åéåçåºåã
å°è¿éå°±å®ç°äºæ¾ç¤ºä¸ºåè§æè åå½¢äºãä½æ¯éè¦éè¿ src å±æ§æè 对åºçæ¹æ³æ¥è®¾ç½®å¾çï¼å¦åä¸è½è¾¾å°é¢æææã
ç»å¶è¾¹æ¡å°±ç¸å¯¹å®¹æç解äºï¼åªéè¦ç»å¶ä¸ä¸ªæå®æ ·å¼çåè§ç©å½¢æè åå½¢å³å¯ï¼
å½å¾çæ¾ç¤ºä¸ºåå½¢æ¶ï¼è¿å¯ä»¥ç»å¶ä¸ä¸ªå è¾¹æ¡ï¼ä½åè§ç©å½¢çè¯ç±äºåè§å¤§å°çé®é¢ï¼ç®ååªè½è®¾ç½®ä¸ä¸ªè¾¹æ¡å¯ã
ä½æ¯æ个é®é¢ï¼ç»å¶çè¾¹æ¡ä¼è¦çå¨å¾çä¸ï¼å¦æè¾¹æ¡å¤ªå®½ä¼å¯¼è´å¾ççå¯è§åºååå°äºï¼å½±åæ¾ç¤ºææï¼åè¿æ ·ï¼å·¦ä¸è§çè±çä¸è§äºï¼
é£ä¹å¦ä½è®©è¾¹æ¡ä¸è¦çå¨å¾çä¸å¢ï¼å¯ä»¥å¨ Alpha åæç»å¶åå å°ç»å¸ç¼©å°ä¸å®æ¯ä¾ï¼æååç»å¶è¾¹æ¡ï¼è¿æ ·é®é¢å°±è§£å³äºã
缩æ¾åçImageViewæ¾ç¤ºåºåç宽é«å°±æ¯å宽ãé«åå«åå»2åçè¾¹æ¡å®½åº¦ï¼è¿æ ·ç¼©å°çæ¯ä¾ä¹å°±æ¾èæè§äºãææå¦ä¸ï¼å·¦ä¸è§çè±çåºæ¥äºï¼
é®ç½©å¯ä»¥ç解为ä¸å±å¸¦éæ度çé¢è²ï¼é®ç½©é»è®¤ä¸ç»å¶ï¼å½å¶å®äºé®ç½©é¢è²æ¶æä¼ç»å¶ï¼å®ç°å¾ç®åï¼
ä¾å¦å ä¸ä¸ªéæ度%ç红è²é®ç½©åçææï¼
æ ¸å¿çå®ç°é»è¾å°±è¿äºäºï¼å©ä¸çå°±æ¯èªå®ä¹å±æ§åæ¹æ³äºï¼æå ´è¶£çå¯ä»¥çæºç ï¼é½å¾ç®åï¼å¸æå¯¹ä½ ææ帮å©å§ï¼
æ´å¤ç»èåç¨æ³è§GitHubï¼ /SheHuan/NiceImageView
å¦æä½ éè¦å®ç°ç±»ä¼¼ééçåå½¢ç»å头åï¼ä¾å¦ï¼
Echarts-ZRender源码分析(一)
Echarts的圆形源码底层图形绘制引擎ZRender,是导航一个独立的2D图形绘制引擎,支持Canvas/SVG(5.0后不再支持VML)。圆形源码它具备图形绘制、导航管理(包括CRUD操作和组管理)、圆形源码oa软件源码图形动画和事件管理(在Canvas中实现DOM事件)、导航程序化打板指标源码响应式帧渲染以及可选渲染器功能。圆形源码
ZRender的导航架构遵循MVC模式,分为视图层、圆形源码控制层和数据层。导航视图层负责图形渲染,圆形源码控制层处理用户交互,导航数据层负责数据模型的圆形源码第二波主升浪源码管理和存储。此外,导航还包含辅助功能模块,圆形源码如图形和Group的管理,其中图形特指2D矢量图形。回合制手游辅助源码
源码文件结构清晰,入口文件zrender.ts中定义了全局方法,如初始化、删除等操作,火箭发射选股指标公式源码ZRender类则负责核心功能的实现。通过实例化代码展示,可以看到如何绘制一个px的圆形并绑定动画,ZRender会处理绘制流程,并将动画添加到管理器中生成帧,开始动画绘制。
后续章节将深入解析元素对象、事件管理器、动画管理器和渲染器的源码。作者雷庭,北京优锘科技前端架构师,有年前端开发和架构经验,专注于可视化前端开发,有兴趣交流的朋友可通过微信ltlt联系他。