问题描述
- 一款手写笔记软件的实现方式及问题
-
要实现安卓设备上的手写功能,一种实现方式是:利用安卓的手势识别,主要是GestureOverlayView这个类里的功能和方法,记录用户触摸和移动的轨迹,形成路径path。路径path实际上就是一些点的集合。将这些路径组合成的笔画形成一个bitmap。写入到一个重写过的edittext中,即实现了手写笔记软件的主要功能。 上面实现的手写内容当文字数量比较多时,比如达到1000字左右,就会出现一些性能的问题。比如,想在笔记的中间插入一个手写字,实际执行的是edittext的getEditableText().insert(int where CharSequence tb)方法,getEditableText()方法实际执行的是edittext的父类textview的public Editable getEditableText()。这个方法返回一个Editable类型的接口,可编辑的。具体实现这个接口的是SpannableStringBuilder这个类。 如果按照上面实现手写字的实现方式改造性能的话,应该改造的就是edittext的getEditableText().insert(int where CharSequence tb)方法。但这里的insert实际SpannableStringBuilder里面的insert方法。以及里面还有一系列的通知内容改变后的方法和回调的方法。 简单一点说就是我们需要自己定义一个类,重写edittext(或者edittext继承关系的上面的类)的insert方法及其一些列的内容改变后的显示方法。
用通俗的语言说就是,重新安卓系统view及其相关的类里面的一个方法或一系列相关方法,这个方法可以实现当有很多图片显示时,中间插入一张图片,或者复制一些图片时,手写软件的性能不会下降很多。
时间: 2024-11-03 22:39:18