Android富文本编辑器总结(二)

2024-08-28 03:18
文章标签 android 总结 文本编辑

本文主要是介绍Android富文本编辑器总结(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android富文本编辑器总结(一)
上一篇就是编号的转换,数字转字母,数字转罗马数字等,比较实用,其中也借鉴了网上的大神的代码,感谢大神们的分享。
下面就需要使用一个简单工厂稍微加工一下,编号的框架就可以搭建起来了。
编号的框架使用的是抽象工厂,即生产工厂的工厂,逻辑也很简单,这个很好地解决了产品簇的问题。比如我想使用有序编号,只需要使用生产有序编号的工厂来获得编号,相反的也可以使用生产无需编号的工厂来获取无需编号。

首先是静态数据接口NoteBookConstants.java

public interface NoteBookConstants {// 序号类型public static final int TYPE_NONE                              = 0; // 无类型public static final int TYPE_NUMBER                            = 1; // 数字类型public static final int TYPE_ENGLISH                           = 2; // 英文字母类型public static final int TYPE_ROMAN                             = 3; // 罗马数字类型public static final int TYPE_CIRCLE_SOLID_POINT                = 1; // 实心圆类型public static final int TYPE_CIRCLE_HOLLOW_POINT               = 2; // 空心圆类型public static final int TYPE_SQUARE_SOLID                      = 3; // 正方形类型// 按键事件public static final int ACTION_DELETE                          = 1; // 删除public static final int ACTION_ENTER                           = 2; // 回车public static final int ACTION_LEFT                            = 3; // 左public static final int ACTION_RIGHT                           = 4; // 右public static final int ACTION_ORDER_NUM                       = 5; // 数字public static final int ACTION_ORDER_ROMAN                     = 6; // 罗马数字public static final int ACTION_ORDER_ENGLISH                   = 7; // 英文字母public static final int ACTION_TYPE_ORDER                      = 8; // 有序public static final int ACTION_TYPE_DISORDER                   = 9; // 无序public static final int ACTION_TOUCH                           = 10; // 触摸public static final int ACTION_TEXT_CHANGE                     = 11; // 文本改变public static final int ACTION_LIST_ITEM_CLEAR                 = 12; // 清除// 序号类别public static final int POINT_TYPE_ORDER                       = 1;    // 有序public static final int POINT_TYPE_DISORDER                    = 2;    // 无序public static final int POINT_TYPE_NONE                        = 3;    // 无编号
}

抽象工厂接口IOrderIndexFactory.java

public interface IOrderIndexFactory extends NoteBookConstants{public IOrderIndex createOrderIndex(int type);
}

有序序号类型工厂OrderIndexFactory.java

public class OrderIndexFactory implements IOrderIndexFactory{@Overridepublic IOrderIndex createOrderIndex(int type) {IOrderIndex orderIndex = null;switch (type) {case TYPE_NUMBER:orderIndex = new NumberIndex();break;case TYPE_ENGLISH:orderIndex = new EnglishLetterIndex();break;case TYPE_ROMAN:orderIndex = new RomanNumberIndex();break;default:break;}return orderIndex;}}

无序图标工厂DisorderIndexFactory.java

public class DisorderIndexFactory implements IOrderIndexFactory{@Overridepublic IOrderIndex createOrderIndex(int type) {IOrderIndex orderIndex = null;switch (type) {case TYPE_CIRCLE_SOLID_POINT:orderIndex = new CircleSolidPointIndex();break;case TYPE_CIRCLE_HOLLOW_POINT:orderIndex = new CircleHollowPointIndex();break;case TYPE_SQUARE_SOLID:orderIndex = new SquareSolidPointIndex();break;default:break;}return orderIndex;}
}

无编号生产工厂NoneIndexFactory.java

public class NoneIndexFactory implements IOrderIndexFactory{@Overridepublic IOrderIndex createOrderIndex(int type) {// TODO Auto-generated method stubreturn new NoneIndex();}
}

最后一个生产工厂的简单工厂IndexFactory.java

public class IndexFactory implements NoteBookConstants{public static IOrderIndexFactory createIndexFactory(int type) {IOrderIndexFactory factory = null;switch (type) {case POINT_TYPE_ORDER:factory = new OrderIndexFactory();break;case POINT_TYPE_DISORDER:factory = new DisorderIndexFactory();break;case POINT_TYPE_NONE:factory = new NoneIndexFactory();break;default:break;}return factory;}
}

以上就是编号的小框架,都是java代码,可以测试一下

IOrderIndexFactory indexFactory = IndexFactory.createIndexFactory(NoteBookConstants.POINT_TYPE_ORDER);
IOrderIndex orderIndex = indexFactory.createOrderIndex(NoteBookConstants.TYPE_ENGLISH);
for (int i = 0; i < 100; i++) {System.out.println(orderIndex.getIndexString(i) + "");
}

总之,不管编辑器的实现方案是什么,这套逻辑基本能够复用,下一篇准备整理一下实现方案。

这篇关于Android富文本编辑器总结(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113571

相关文章

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Android 实现一个隐私弹窗功能

《Android实现一个隐私弹窗功能》:本文主要介绍Android实现一个隐私弹窗功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 效果图如下:1. 设置同意、退出、点击用户协议、点击隐私协议的函数参数2. 《用户协议》、《隐私政策》设置成可点击的,且颜色要区分出来res/l

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja