客音方典软件开发杂记(客方言版)

前言:制作亟只软件个动机,係非常之单纯个。编写软件个目的係为开物介呢?想必大家,在平常时也遇倒过咁样子个情况哇,著係当尔用屋家话去念一篇文章时,总(dǔng) 会因为有的字无晓读而冇得冇停下来个情况。然,无识读个汉字,又无知得爱去哪埕查…敢啱汝唇边有大人个话,可能还可以去问渠人「亟只字、哪样子读」,假使係在落背呢?可能,尔著会乱读一通矣哇。还有,假使尔具备开一定个语言学方面、音韵学方面个知识、也知得爱去哪埕查询汉字个客话读音著得,查倒个读音也往往无係吾人当地个客家话读音,佟係别二埕客家话个读音,比如梅县腔呀四县腔呀,总之著係无有自家屋家地方个客家话读音。

所以针对这种情况,吾著惗,可无可以自家动手去做一只可以查自家屋家话读音个软件也?敢啱上只学期吾学习紧 Java 亟只编程语言,所以自家著想爱试下子。哪怕做无成,也无要紧,反正著係一只尝试罢矣。吾紧惗紧觉得,有亟只必要去做一只有咁样子功能个软件。

​ 在吾正式下开决心去做亟只软件后,吾著开始着手设计软件个大概框架矣。


客音方典

软件设计思路

软件一开始时,吾吂惗好爱使物介技术去做成(sáng),连客家话读音数据哪样子导入软件,著无清楚。毋过呢,吾穰我个实现思路写开下来,可以讲最开始写下来个思路,并吂涉及倒任何个技术层面,著不过係写出开爱实现个大方向吆。不过,后来个事实证明,头先写出个设计思路对软件开发具有不的大个指导意义。解决开不少个问题同麻烦事。

  下背係吾最开始写个软件设计思路:

客家方言音典设计思路

主要界面:搜索界面,客家话词汇界面,帮助界面

  • 搜索界面

上为搜索框——支持汉字、普通话拼音、客家拼音、国际音标、声调、调值、正则表达式查询等多样方式进行查询,并建立筛选器,搜索框下个列表显示查询结果,可对列表卡片进行一的简单逻辑活动(收藏、分享、纠错)

筛选器功能:

  1. 支持普通话拼音显示隐藏
  2. 支持国际音标显示隐藏
  3. 支持客家拼音显示隐藏
  4. 支持按字母进行搜索,结果按普通话拼音/按国际音标/按客家方言拼音+声调排序
  5. 筛选客家专用字/通用字
    下为recyclerList布局
    卡片item布局
    左边显示汉字,其右旁显示客家拼音(声调),
    其下显示国际音标及调值,旁显示中文拼音
    注意:当一个字有多个读音时,应合併到同一个汉字卡片中,并注明每个读音属性及适用合——可通过 word pin1,pin2样来写
根据文字描述,最后实现个界面效果图

  • 单字卡片界面(搜索界面跳转)

上为卡片item布局,且参数一样而附加反切

下为意思布局

  1. 当有高峰客家当地词组、特殊用法时,则显示
  2. 显示汉字字典意思
  3. 显示新华字典意思
  4. 显示说文解字意思
    功能:支持长按复制
根据文字描述,最后实现个界面效果图

  • 帮助界面(可用html语言来写)

    开发初衷

    介绍一些方言知识

    介绍高峰客家话声母、声调、韵母并学习客家拼音方案

    介绍自创方案、梅县客家方案、台湾四县方案

    对故乡方言个寄语

根据文字描述,最后实现个界面效果图

  • 词汇界面

    搜索查询框,支持简单查询
    一级分类索引列表——显示分类,例如农业用词
    嵌套二级词组列表——按拼音顺序排列显示

根据文字描述,最后实现个界面效果图


  • 词组卡片界面(词汇界面跳转到词组卡片界面)
    上词组显示界面——左为词组,其右为客家拼音,下为普通话拼音
    词语意思分客家话解释、普通话解释
    如有图片,则附带图片
根据文字描述,最后实现界面效果图

  • 设置设置界面

    通过appmenu跳转到Setting_layout
    设置语言(简体或繁体)
    设置拼音显示方案(大陆梅县方案、广西高峰自创拼音方案、台湾四县腔客家拼音方案、国际音标方案)

    设置声调显示方案(调值显示、字母附加显示、折线显示、阿拉伯数字显示)
    字体大小设置
    版本更新
    收藏界面跳转按钮
    搜索查询记录列表

根据文字描述,最后实现界面效果图

  • 反馈界面(可用html写)
    汉字客家读音错误,反馈
    没有收录相关读音的,可反馈
根据文字描述,最后实现界面效果图

  • 关于界面

    软件版本信息
    开源项目地址
    创作者联系方式

    引用开源库列表

    参考文献列表

根据文字描述,最后实现界面效果图

  • 数据资源需求
  1. 客家方言拼音数据表(有国际音标列、普通话拼音列、客专/通用标识列)
  2. 新华字典数据表
  3. 说文解字数据表
  4. 汉字字典数据表
  5. 软件图标

开发杂谈

  写好软件设计思路后,著正式来到开发亟一田地矣。

  开发需要硬件:Android studio

  需要编程语言:Java,HTML&&CSS&& Javascript,SQLITE3

  接等呢,吾将花费一啲时间对软件组成结构等作出说明。


软件组成结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
QHAKKA
├─assets(储存软件资源,如数据库、网页资源等)
│ ├─database(数据库)
| ├─htmls(网页资源)
| ├─audios(音频资源)
|
├─java(专门储存实现界面跳转、数据处理等代码)
│ └─com
│ └─gohung
│ └─hazukie
│ └─qhakka
│ ├─adapter(Recyclerview滚动列表个适配器)
│ ├─binder(绑定滚动列表个数据绑定器储存地方)
│ ├─customView(储存自定义组件,如输入框)
│ ├─database(存取数据的数据库处理器)
│ ├─data_model(绑定器需要用到的数据模板)
│ ├─util(工具集,有拼音转国知音标工具、声调转换工具、字符串拼接工具等)
│ └─viewmodel(监控活动全生命周期并对数据变化作出反应的视图监察器)
|
├─manifests.xml(储存权限配置、活动注册等关键信息)
|
└─res(储存布局、字符、图片、动画等)
├─anim(动画效果)
├─color(组件颜色配置)
├─drawable(图标图片等)
| ├─drawable-anydpi
| ├─drawable-hdpi
| ├─drawable-mdpi
| ├─drawable-v24
| ├─drawable-xhdpi
| ├─drawable-xxhdpi
| ├─drawable-xxxhdpi
|
├─font(字体)
├─layout(布局)
├─menu(菜单)
|
├─mipmap(软件图标)
| ├─mipmap-anydpi-v26
| ├─mipmap-hdpi
| ├─mipmap-mdpi
| ├─mipmap-xhdpi
| ├─mipmap-xxhdpi
| ├─mipmap-xxxhdpi
|
├─values(储存文字、软件主题等)
│ ├─drawable-anydpi
│ ├─drawable-hdpi
│ ├─drawable-mdpi
│ ├─drawable-xhdpi
│ └─drawable-xxhdpi
|
└─values-night(夜间模式适配)

打上高列出个软件结构分布,可以看出其係一只比较传统个安卓软件架构,并吂曾用到物介模式,比如亚啲MVVM、MVP等架构。视图代码同运作逻辑实现个代码係分离个,同时也係静态绑定个。意思著係讲,一切都係预先设计好矣个,对变化开个数据并无有非啲好个反应。

在软件开发中,软件框架用个係腾讯天美团队推出个 QMUI 主题开源库。由于亟只开源库中个组件,如按钮、状态栏等,係提前设计好矣个,且也比较美观,故吾可以直接拿来用。好识不识、著像拼积木咁样子,尔想爱装成物介样子个,都係可以个,著要尔惗得出吆。

虽然UI方面,係无有物介问题矣,但係在字母转声调、数据库查询方面遇倒开问题矣。为开解决亟埕两只问题,吾还专门查开好多好多个资料,终于睥倒解决个方法矣。係物介方法呢?著係通过映射来解决。具体个做法係:尔做好一只拼音对应声调拼音个拼音表先,然后待转换个拼音同表格中个拼音配对,如配对着矣,著换开待转换个拼音去,换成表格中个声调拼音。咁样子著可以批量个替换矣。

数据库查询亟一方面呢,吾个解决方法係,一次性获取数据库中所有个数据,然后储存在一只列表中。当尔在搜索框中输入汉字或拼音,同时揿下按钮后,软件个后台著会拿尔输入个汉字或拼音去同原先储存在列表中个数据进行配对,如果配对成功,著将相关数据显示出来。如果后台无睥倒同尔输入个共样个数据个话,著晓显示一只「尔输入有误」个提示尔检查个界面。起初,吾係咁样子做个,每摆尔输入同搜索时,正请求数据库进行检索,并返转相关个数据。作物介,榜尾吾无采用亟种做法呢?係因为亟种做法,非常个消耗运行内存,且其处理䟘身个效率也係非啲低个,讲得浅显的著係 :尔用亟只软件进行查询时,会感觉亟只软件一卡一卡个,捞过自家个手机出开问题一样,每点开一只界面,都会迟延两三秒。可能尔会讲,正迟延开两三秒,有物介关系哦??!可能尔光听吾讲,无觉得有物介问题,等尔真个去体验开,尔著会讲「只係物介软件噢,咁卡个??!」个發火起个话。实际也係,迟延超过开一两秒,著会分人一种卡卡个感觉,对于用户来讲,係偌无好个体验。——亟著係吾无采用「一次查询一次反馈」做法个原由。

  正係因为重视用户个体验,吾对会造成卡顿个地方,都会进行再优化,尤其係页面打开个瞬间。

在开发期间,吾还遇倒开其他个问题。比如,Recyclerview 个使用,当初噢,因为吾对其靡係非啲熟悉,整得吾在亟埕整噻开好多个时间捞精力。因为 Recyclerview 在吾只软件中,有紧非常重要个地位,若係无用其个话,榜尾后续个工作佟无法度去继续矣。正係源于此,吾係非常个落力个去睥能够解决我问题个办法。——我问题係,好多界面都有用倒Recyclerview,无能够只只界面都去写一摆哇,唵样子个话,也太浪费矣哇。而且,写咁多重复个代码,对于今摆个维护也无係一件好事。著会分后期维护增加难度吆。

经过吾多次找寻,终于睥倒开一只恁优秀个 Recyclerview 适配器开源库矣。其个核心思想著係,能同 Recyclerview 解离,并无黏带于 Recyclerview 身上,还能够在多埕多次使用。故所,吾将其用在我个软件后,头先讲个问题也无有矣。对噢,渠名字,吾差粒儿忘记讲开矣,渠名係喊做「 Mutitype-Adapter 」。

同时呢,吾也采用开一些比较新鲜个技术,比如谷歌公司个今那两年推出个 Jetpack,吾著用开 Jetpack 之背个Viewmodel、Room 数据库两项技术。之所以用新个技术,係因为Room数据库封装开数据库请求等具体细节,而无使吾人开发者去花过多个精力关注。毕竟数据库请求等,写䟘身来,係真个烦人,吾起初著係用原生态个数据库,不过其分吾个体验係真真个无好。毋单止写䟘身繁杂,还偌容易出差错。综合上高罗列个,二话无讲个,吾著投向开Room数据库个怀抱中去矣。Viewmodel,係物介呢?其係一种可以监察软件前台一切数据变化个组件,有的情况下尔用亟只组件去实现个话,著会轻松多矣。比如讲,当尔在设计界面之背修改开一啲设计选项,尔急需爱其生效时,尔晓哪样子做呢?传统个做法係,尔在当前界面个后台创建一只监控函数,当选项发生变化时著做出反应…然埕有只问题,著係当前界面係做出变化矣,若尔返转前先个界面呢?前先个界面,其晓变化无呢?答案係肯定个「无晓」。正因为如此,尔可能爱在多只界面写监控函数…亟係一只无明智个做法。而反观 Viewmodel 库,其可以监控全局,一旦有某埕变化,其可以让全局做出变化。故所,用新个技术,係真个能提升软件开发个效率个。

其实开发,并无有物介抽象个,如果尔自家有一定个编程基础个话,著晓明白,软件开发著係将汝头那中惗个东西变成真正个东西、亟一过程吆。著像吾人平常时搞「我个世界」亟只高度创造性个沙盒游戏,想爱做物介,著做物介。著不过,开发呢,其并无使爱物介原材料,尔只要写出几句指令,计算机著能将其具象化开,亟也係计算机编程最神奇个地方。


最后总结

吾係,真个下定开决心去做矣。打上只学期个新历十二月时开始,做到我寒假结束,前前后后用开两只月零个时间。讲多也无多,讲少也无少矣呐。开发速度,确实係蛮慢个呢。哪人喊吾个编程技术咁差火呐,无个话,也无应该用咁久个啦。

  毋过,总个来看,吾在开发亟只软件个过程中,收获开偌多偌多个东西。比如讲,吾学晓开哪样子去调试,学晓开HTML网页开发、学晓开软件运行出现差错时哪样子去排查同修正。总之,吾在亟期间,主观能动性发挥到开极致矣,可以讲。完只寒假,吾都在学习,尔讲亟係靡係恁不敢相信也?哈哈,讲实际话,连吾佟无正相信呐,哪喊吾自家在往时都係懒亢該个一只人噜?!

  接紧讲噢,亟只软件, 吾还係无算完成。数据方面,吾著吂完成才。假使在接下来个几只月完成开个话,亟只软件个所有工作,著算係结束矣。

  吾对吾自家讲:「尔今日付出个努力,在晨朝日,在今摆,都係有意义个。请尔加油下去!」。

客音方典软件开发杂记(客方言版)

https://www.hazukieq.top/2022/03dccf3a1b.html

作者

葉月绘梨依

发布于

2022-03-15

更新于

2024-09-22

许可协议

评论