android 漂亮的表单界面,面向ArcGIS for Android的表单界面生成器的设计与实现
孙俊英 陈忠超
摘 要:基于ArcGIS for Android的采集系统作为当下主要的野外采样方式之一,被广泛的应用于各类场景,针对不同采集内容,采集系统的主要差异在于采样的属性数据所有不同,使用传统基于xml布局的固定表单进行属性采样,在功能的可扩展性与复用性上存在一定难度。基于此,本文利用java的反射技术、注解机制及android的自定义控件原理设计并实现了android表单界面生成器AutoForm,针对不同的采集对象,利用生成器,能动态生成满足需求的属性采集界面,极大地降低了研发成本,具有良好的可扩展性。
关键词:ArcGIS for Android;java反射与注解机制;android自定义控件;AutoForm
0 引言
传统野外数据采集主要基于纸质记录,該方式耗时费力,效率低下,而基于ArcGIS for Android[1]移动开发技术实现的采集系统充分发挥了移动智能终端操作简易、携带方便、具有良好导航定位的特性,已成为野外数据采集的新趋势。使用采集系统进行野外采样通常需采集空间数据、属性数据与多媒体数据,针对各类采集对象,采集的空间数据内容相对固定,总是围绕点、线、面三种类型;但采集的属性数据内容却因采样对象的不同而有所差异,在进行采集系统研发时,针对不同的采集对象,往往需单独定制属性表单界面来满足采集属性数据的需求,这样的表单结构固定,可扩展性差,若要修改采集属性时,往往需重新设计,修改成本较大。
针对以上情况,本文基于java的反射技术[2]、注解机制[3]以及android的自定义控件原理[4]设计并实现了高度可复用、扩展性良好的android表单界面生成器——AutoForm,AutoForm在程序运行过程中动态生成属性采集界面,它依赖于简单的java对象(POJO)[5],只需对POJO的内部属性及注解进行相应变动,就能快速修改为满足采集需求的属性表单界面,再基于对象关系模型映射(ORM)[6],便能将填写的属性数据直接持久化到数据库中。
1 整体设计
表单界面生成器AutoForm的核心基础是java反射技术与注解机制,利用标注在POJO属性上的注解控制表单所需组件,通过反射获取到java对象及注解信息,根据注解信息实时调用android原生控件或用户自定义控件动态生成属性表单,实现POJO与表单的一一映射关系,如图1所示。POJO作为AutoForm的中间媒介,可以通过ORM获取数据库SQLite[7]中的数据并直接呈现在表单上,也能快速将表单上填写的数据信息快速持久化到数据库中,实现了表单数据与数据库记录之间的快速转换。
2 关键技术
2.1 java反射技术
java反射作为java的高级特性,能在运行状态中获取任意一个类的所有属性与方法,对于任意一个对象,能够调用该对象的所有方法和属性。通过反射技术,可以在高度解耦的情况下开发各类通用框架,实现程序开发的灵活性与可扩展性[8]。
2.2 java注解机制
java注解又称java标注,在java语言中可以对类、方法、变量、参数与包进行标注。Java注解允许被嵌入到字节码中,通过java反射,可以在运行时获取注解信息,方便根据注解信息进行相关操作。采用注解能提供更大的便捷性,易于程序的维护与修改。
2.3 android自定义控件原理
控件是android开发的基本元素,是实现android功能必不可少的组成。在android中,控件大致分为ViewGroup控件和View控件两类,自定义控件便是通过继承View控件或ViewGroup控件为实现特殊需求而定义的控件。通过自定义控件可以提高开发效率,降低维护成本,减少布局页面与功能代码之间的耦合性。
3 功能实现
表单界面生成器AutoForm通过反射技术与注解机制实现POJO与表单的一一映射,POJO中的每条属性对应表单界面中的每一栏控件,通过属性上@AutoView注解中的value值指明控件类型,display值作为控件标识,index值表示控件顺序,bind值装载单选多选条目。除了文字内容,AutoForm还将多媒体的拍摄与展示融为一体,在面向ArcGIS for Android的采集系统中完成空间数据采集后,可以快速获取属性数据与多媒体数据,如图2所示。
AutoForm的优势之一在于针对采集对象变化或者采集属性调整时,只需简单变动POJO中的注解内容,便可以快速生成满足需求的属性表单界面,这相较传统的固定表单具有更强大的可扩展性。优势之二是属性表单界面中每栏组件的值与POJO中的各属性一一对应,在表单界面中完成采集后,会直接赋值给POJO的各属性;反之,POJO的各属性值也能直接呈现在表单界面上,将POJO作为中间媒介,再结合ORM,能实现数据库记录与表单内容的快速转换。
4 结语
基于ArcGIS for Android的移动智能终端采集系统由于操作的简易性、携带的便捷性以及定位的精准性,已成为当下野外采样的主要手段之一,当针对各类采集对象,采集系统的主要差异在于采集的属性数据与多媒体内容不同,而本文所提出的表单界面生成器AutoForm能快速根据差异进行扩展。当采集对象变化或者采集的属性内容有所变动时,只需简单修改AutoForm中POJO的属性与注解内容,便能快速生成满足需求的属性表单界面,相较于传统基于xml生成的布局表单,AutoForm具有良好的扩展性和高度可复用性。这在面向ArcGIS for Android采集系统研发中,能极大地降低研发成本,变更需求时也能快速做出响应,具有一定推广使用价值。
参考文献
[1] 张海瑞,吴学饶,兰小机.基于ArcGIS for Android野外实习数据采集与导航系统的实现[J].测绘工程,2015(3):36-39.
[2] 孙巍,徐学东,徐学军.Java反射机制在可重构Web框架中的应用[J].计算机工程与应用,2005,41(36):92-94.
[3] 周中雨,李洋,杨程屹,等.基于Java注解的Drools业务规则开发框架设计实现[J].电子测试,2017(6):63-65.
[4] 张香倩,黄林生,陈阳德.基于Android的自定义媒体播放控件设计与实现[J].软件导刊,2016(5):79-81.
[5] 吴昊野.浅谈信息系统工程和POJO模型组件开发[J].科教导刊(电子版),2016(4):141.
[6] 吕威.对象模型、关系模型与对象关系映射技术[J].信息通信,2012(6):87.
[7] 刘仕华.基于Android的SQLite数据库操作管理[J].信息化建设,2015(9):252.
[8] 徐宝文,周超洪,周天琳,等.面向方面的程序设计:概念、实现与未来[J].计算机与数字工程,2005,33(8):1-10.
android 漂亮的表单界面,面向ArcGIS for Android的表单界面生成器的设计与实现相关推荐
- 自动生成Android界面,面向Android的Web Service界面自动生成技术研究
摘要: 据统计,开发人员在开发应用程序的过程中,接近一半的代码用于用户界面部分,大约一半的运行时间用于执行这一部分.所以,减少用户界面部分的开发代码和运行时间,能有效提高程序的运行效率.智能家居中,由 ...
- 黑客登录界面科幻黑色主题网页模板表单验证代码
黑客登录界面科幻黑色主题网页模板表单验证代码 效果: html代码: <!DOCTYPE html> <html lang="en"><head> ...
- Android简易音乐重构MVVM Java版-新增推荐、雷达歌单详情列表界面(十八)
Android简易音乐重构MVVM Java版-新增推荐.雷达歌单详情列表界面(十八) 关于 效果 修改ApiService 增加歌单列表实体类RecommendListEntity 新增歌单列表界面 ...
- android原生界面太烦了,Android进阶(二十七)Android原生扰人烦的布局
Android原生扰人烦的布局 在开发Android应用时,UI布局是一件令人烦恼的事情.下面主要讲解一下Android中的界面布局. 一.线性布局(LinearLayout) 线性布局分为: (1) ...
- python脚本编程实例_面向ArcGIS的Python脚本编程.pdf
[实例简介] 面向ArcGIS的Python脚本编程,最实用的教程. 面向ArcGIS的Python脚本编程,最实用的教程. 面向ArcGIS的Python脚本编程,最实用的教程. 目录 第一部分Py ...
- arcgis for android离线编辑,ArcGIS for Android离线数据编辑实现原理
实现ArcGIS for Android上的离线数据编辑,具体实现环境及其步骤如下: 一. 环境准备 1. 软件环境 1) ArcGIS Server10用 ...
- arcgis下的python编程-面向ArcGIS的Python脚本编程
面向arcgis的python脚本编程是一本指导ArcGIS for Desktop专业用户进行Python开发的指南,本书将教会您如何通过编写Python代码处理空间数据并在ArcGIS中自动化实现 ...
- arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...
操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容 摘要 Collector for ArcGIS 会将离线副本存储在 SQLite 数 ...
- bootstrap html5 表单验证,基于Bootstrap+jQuery.validate实现表单验证
这大概是一种惯例,学习前台后台最开始接触的业务都是用户注册和登录.现在社会坚持以人为本的理念,在网站开发过程同样如此.User是我们面对较多的对象,也是较核心的对象.最开始的用户注册和登陆这块,也就尤 ...
最新文章
- Fedora安装Samba与windows共享文件
- 英特尔首款AI芯片终于发布:训练推理两用,历时4年花费5亿美元买来4家公司...
- linux 内核网络协议栈
- 关于FlexBox的布局
- java客户端服务器代码_Java Socket通信 客户端服务器端基本代码
- 【Python】又一个可视化神器Highcharts,Python版也有哦!
- 牛客多校6 - K-Bag(哈希+滑动窗口)
- linux 文档编辑器 word,linux下vi编辑器命令大全
- C#坏习惯:通过不好的例子学习如何制作好的代码——第3部分
- IT入门?推荐首选学习HTML5大前端
- 如何使用sp_send_dbmail存储过程将SQL查询结果通过电子邮件发送到智能手机
- excel 字符串连接和求差集
- 通过PS制作逼真的车窗玻璃雨滴效果
- 数码相框(十六、LCD显示JPG格式图片)
- 巴塞罗那2019-20赛季球队大名单
- The name `AssetDatabase' does not exist in the current context
- 一分钟学会写网页表格
- apa引用要在文中吗_如何在研究论文中引用文献
- 程序员可以收藏的几个导航网站
- EasyExcel生成多个excel.xlsx进行压缩导出