首页 > 其他分享 >一个android 文本比对App的实现(一)

一个android 文本比对App的实现(一)

时间:2023-06-14 11:01:16浏览次数:36  
标签:App c++ 算法 开发 android 文本 app


做c++开发很多年了,从早年windows vc6.0 做客户端程序开发,这些年后台流媒体服务器后台开发。随着时代变迁,移动互联逐渐兴起,直到现在,移动互联的风头早已盖过传统互联网应用,因而传统后台开发似乎日渐式微。如今要找工作的话,android,IOS等开发的职位不但数量远远多于c++,而且报酬也要比c++高很多,如果在移动开发上做过三年以上,年薪25W以上的机会多的是,但是对于c++ 要达到这个数,工作经验一般多得六七年,同时,技术要求比做移动互联网要高很多。因此,一直寻思着,要转行到移动开发,但由于对c++感情较深,转行的实施一直不温不火,直到有一次看到滴滴招聘,招三年经验的android开发,年薪可开到50W, 这一刺激让我彻底下定决心转行,毕竟做人没必要和钱过不去嘛。


为了搞清楚,好公司在招android开发时,一般需要怎样的条件,我在拉钩上转了一圈,将年薪20W以上的android开发要求总结了一下:

1.  有android开发3年以上的经验。

2.  精通java ,c++, 有扎实的算法和数据结构功底。

3.  精通软件架构,良好的代码习惯。

4.  精通android UI 开发, 多线程,以及网络协议原理。


经过一段时间的研究和实践,觉得自己似乎已掌握了android开发的技术,但问题在于,我多年来是做c++的,项目经验也是c++为主,怎样让市场认可我的android开发能力呢?想来想去,得到的办法是我自个做一个满足上述条件的app, 我想,没有比拿出作品来证明自己能力的更好办法了。



这个App可以说麻雀虽小,五脏具全,基本上能较好的显示出以上几点要求。其实它就是beyond comparer的安卓版,当用户选定两篇文本后,app会将文本内容的异同比较出来。

首先看看app的启动界面:

一个android 文本比对App的实现(一)_android开发


界面的结构简单,上头是两个textview控件,下方是一个按钮工具栏,在textview控件长按住,会调用出文件选择界面,让用户选择要比对的文件,由于android本身没有自带的文件选择框,所以这个界面也是自己开发的(借鉴了网上一位朋友的设计,但在代码设计上做了一些改进):

一个android 文本比对App的实现(一)_算法_02


当用户分别通过长按上下textview, 调出文本选择框,并选择相应文本后,文本的内容会显示在textview中,同时,程序会调用文本比对算法找出两个文本的最大共同子串,文本比对算法用的是Hirschberg博士改进的lcs算法,算法将原lcs算法的存储复杂度将O(n^2)改进成O(n), 在后续文章,我们会研究该算法。当比对后,文本中差异的部分会用红色高亮,相同的部分以黑色字体显示:

一个android 文本比对App的实现(一)_android开发_03

在底部工具栏按钮,点击向下,或向上箭头会依次将文本相对应的不同的地方,以背景高亮显示:

一个android 文本比对App的实现(一)_算法_04


程序功能虽然简单,但我感觉比较实用,同时该app基本上满足了上述的几点要求,既有界面的设计,又有算法的设计实现,同时在文本选择框的设计中使用到了一些设计模式的技术,这点能满足“ 精通软件架构,良好的代码习惯“这一要求吧,最重要的,当人家问我拿出作品时展示时,我有东西拿的出来。后续我会把代码上传到csdn,希望籍此能和各位朋友探讨移动开发的技术,如果能得到大牛们的指点,那小的真是感激不尽了!

标签:App,c++,算法,开发,android,文本,app
From: https://blog.51cto.com/u_16160261/6476246

相关文章

  • Canvas_绘制线段、圆形、文本、图像、视频、处理图像数据
    Canvas_绘制线段、圆形、文本、图像、视频、处理图像数据绘制线段varcanvas1=document.querySelector("#canvas1");varctx=canvas1.getContext("2d");//设置开始路径ctx.beginPath()//设置绘制的起始点ctx.moveTo(50,50);//设置经过某个位置ctx.lineTo(50,30......
  • uniapp 更新依赖到指定版本解决uniAPI不可用问题
    我解决的问题:在项目中使用uni.startLocationUpdate(OBJECT)报错:uni.startLocationUpdateisnotafunction 怀疑是版本问题,当时的版本......
  • uniapp 不显示原生导航
    自定义导航栏使用注意当navigationStyle设为custom或titleNView设为false时,原生导航栏不显示//pages配置部分页面{"path":"pages/default/systemError","style":{"navigationBarTitleText":"系统异常","navigationS......
  • SpringBoot启动类@SpringBootApplication注解
    在springBoot的启动类中,提供了一个mai函数的程序入口,来启动加载SpringBoot程序,那么注解@SpringBootApplication,通过源码可以看到,它相当于@ComponentScan+@EnableAutoConfiguration+@SpringBootConfiguration。通过@SpringBootConfiguration注解的源码得知,其配置了一个@Confi......
  • R语言文本挖掘、情感分析和可视化哈利波特小说文本数据|附代码数据
    全文下载链接:http://tecdat.cn/?p=22984最近我们被客户要求撰写关于文本挖掘的研究报告,包括一些图形和统计输出。一旦我们清理了我们的文本并进行了一些基本的词频分析,下一步就是了解文本中的观点或情感。这被认为是情感分析,本教程将引导你通过一个简单的方法来进行情感分析。......
  • android Button组件的属性和方法
    androidButton组件的属性和方法   一、相关属性     二、相关方法 setClickable(booleanclickable)设置按钮是否允许点击。clickable=true:允许点击clickable=false:禁止点击setBackgroundResource(intresid)通过资源文件设置背景色。resid:资源xml文件ID。按钮默认背......
  • 【转】Android字体小结
     android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)android:autoText如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。android:bufferType指定getText()方式取......
  • Android SeekBar的使用
    AndroidSeekBar的使用  <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="......
  • 【Android】ListView与Button的共存问题解决
    【Android】ListView与Button的共存问题解决这两天在捣鼓ListViewwidget,为了在ListView中加入Button这类的有“点击”事件的widget,请教了不少高手,感谢LandMark对我的认真讲解,下面把解决过程描述一下。 ListView和其它能触发点击事件的widget无法一起正常工作的......
  • UIViewController生命周期方法viewDidLoad、viewWillAppear和viewDidAppear
    UIViewController生命周期方法viewDidLoad、viewWillAppear和viewDidAppear 这3个方法执行顺序为:viewDidLoad-》viewWillAppear-》viewDidAppear  viewDidLoadCalledaftertheviewhasbeenloaded.Forviewcontrollerscreatedincode,thisisafter-loadView.Forviewc......