CreateJS —— 利用 rhino, apkeditor, xml2view, textwarrior, android-rhino 实现的伪 IDE
作者目前实现的功能:
1.解释 js (非编译)
2.打包 app (非编译,签名时有BUG)
3.打包 modpkg (非编译)
4.编辑器高亮,伪补全
(var 与function 声明的变量名/函数名还未实现作用域)
主题完全自定义(高亮具有 BUG,具体在正则,int,与字符串)
CreateJS:
就这样,我 Copy 了 CreateJS 的编辑器到我的 APP 上(有点不耻)
当时还没有买电脑,用的是 AIDE 嘛,然后一打开编辑器准备研究研究,结果愣是一个也看不懂….
(顺便吐槽 LingSaTuo ,每当我想联系他时都会是: “海不会不蓝,我不会不在,除了……”)
后面才发现 致 群的 Celivad 就是 LingSaTuo ….
然后嘛我也是感谢了他一波
现在回过头来再看看,Lexer 不就词法分析嘛,AutoCompletePanel 不就自动补全面板嘛
于是经历了一阵硬磕后,还是做出了第一个编辑器(虽然是别人的编辑器)
CideCompat 是我的第一个编辑器
可编辑和执行大部分代码, 有代码语法高亮和自动补全(已废弃)
CideCompat:
后面又尝试做了两个 IDE,还是失败了,应为没开源所以这里就不多叙述了
时间来到 2022 年,这一年我的 Android 技术已经算渡劫镜了
为了新 IDE Reverse (溯),我决定自己写一个编辑器
之前看到了个关于编辑器的博客,一瞬间想起来了,再次去翻,闭门造车
Sora-editor 是一款酷炫优化的安卓平台代码编辑器
由 Rosemoe 制作
Sora-editor:
经过一段时间的闭门造车学习,下面开始吧!
MuCodeEditor -> 一款快速渲染的代码编辑器,还在添加功能中…
这是我现在研究成功的编辑器,能高亮、自动补全,还在加功能
若你要研究的话别忘记给 Star 啊,不能白嫖好吧!
MuCodeEditor:
制作过程
绘制的坑
既然要写个编辑器,那我们肯定得看 Android 的绘制嘛
找到 canvas.drawText ,CTRL 按着点它!
我们看到它调用了 super.drawText,继续跟进
终于在 BaseCanvas 中找到了 drawText 方法,我们来分析分析:
在第二个 if 中,我们发现他去判断了 text 的类型
如果是 String、SpannedString、SpannableString
它就会吧它 toString 一次!
我们都知道在 onDraw 方法中尤其要小心对象的创建,如果 onDraw 中创建了对象
然后我们又频繁 invalidate 就会造成内存抖动(即上次的对象刚被 gc 这次又创建了对象,长此已往就会导致界面卡顿,如图二)
继承 View
首先你得继承自 View 吧
什么?你问我为啥不继承 EditText 或者 TextView ?
刑啊你可以自己去试试,看看到时候不卡死你
就这么和你说吧,这俩控件不能适配大文本,你文本一多就得凉
究其原因还是缓存处理问题
当然你可以继承 SurfaceView,以实现 主线程外绘制
这样做的好处很明显,就是不会影响到 APP 的正常运行
你又问我那为什么要继承 View ?
主要是之前尝试过,但是发现要一直 while(true) 去更新编辑器很难受
还有一点就是 SurfaceView 无法使用 scrollTo, scrollBy 方法
我之前就卡在处理 x 轴的滚动操作了….
当然我还是很鼓励你去继承 SurfaceView 的,谁能实现谁的编辑器起码堪比 MT 的(流畅度)
剩下的后面的帖子再说
![[滑稽]](/public/face/f25.png)
![[玫瑰]](/public/face/f36.png)


举报 0