怎么建立网站模版,现在的网站开发框架,WordPress分享到微博代码,望城网站建设对于一个富文本编辑器来说#xff0c;图文混排是最基本的功能。而从上一篇文章中我们知道图文混排需要使用ImageSpan。下面这段代码摘自我的RichEditText源码#xff1a;/*** 添加图片* param filePath 图片文件路径*/public void addImage(String filePath) {SpannableStrin…对于一个富文本编辑器来说图文混排是最基本的功能。而从上一篇文章中我们知道图文混排需要使用ImageSpan。下面这段代码摘自我的RichEditText源码/*** 添加图片* param filePath 图片文件路径*/public void addImage(String filePath) { SpannableString spannable new SpannableString(\n);Bitmap bitmap BitmapUtils.decodeScaleImage(filePath, IMAGE_MAX_WIDTH, IMAGE_MAX_HEIGHT);if (bitmap null) {return;}ImageSpan span new ImageSpan(mContext, bitmap, filePath);spannable.setSpan(span, 1, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);getText().insert(getSelectionStart(), spannable);}参数是图片文件路径BitmapUtils源码请查看项目工程。这个span的最前面加了一个换行是因为当时项目要求插入图片之前必须换行。而这个ImageSpan是我继承了系统的ImageSpan写的一个子类主要是在图片之外还保存了该image对应的路径和url信息public class ImageSpan extends android.text.style.ImageSpan implements Span {private String mFilePath;private String mUrl;public ImageSpan(Context context, Bitmap bitmap, String filePath) {super(context, bitmap);mFilePath filePath;}public ImageSpan(Drawable drawable) {super(drawable);}public String getFilePath() {return mFilePath;}public String getUrl() {return mUrl;}public void setUrl(String url) {mUrl url;}Overridepublic String getValue() {return mUrl;}}对于一般的项目需求来说不仅仅要展示富文本还需要保存、传输。而一般来说在保存、传输时需要转化成html风格的标记语言这是富文本编辑器的最大坑之一。具体细节后面专门介绍继续ImageSpan的介绍。上述代码中我构造的ImageSpan子类可以在后续传输给服务器时先上传图片获取到图片的url后再构造标记文本时使用。我们项目使用的标记文本基本参照了HTML格式规范因此转化代码如下if (characterStyle instanceof ImageSpan) {ImageSpan span (ImageSpan) characterStyle; return String.format(, TextUtils.isEmpty(span.getUrl()) ?span.getFilePath() : span.getUrl());}可以看到如果span中被设置了url(在上传图片后设置)那么会将src属性设置为url反之则还是用filePath(这里是因为草稿功能的需要后续详细介绍)。具体富文本转化请看后续讲解。