等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年06月01日
今天开始着手做Android安卓系统上HeBook1《和码中文》第一册软件。
在苹果iOS上,这款软件已于2011年8月发布。AppStore上的HeBook1《和码中文》第一册软件
希望能在两个月内完成。Edited by user 2013年6月2日 6:59:01(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年06月18日
《和码中文》教程软件,课程目录与内容,应该采用Master-Detail的结构,iOS与Android都有,要用好这一结构,得学习相关的资料,做些练习。
http://developer.android...omponents/fragments.html
http://developer.android.../fragments/creating.html
Edited by user 2013年6月18日 23:07:18(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013-09-23
从2003年09月23日开始做和码到今天,10年整。
采用Android 新的UI设计技术Navigation Drawer重做HeBook1.
参考资料: Android Navigation Drawer Creating Navigation Drawer
Edited by user 2013年12月3日 0:15:11(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年09月30日
在Lesson_Detail页,单字用GridView显示,词组因为有不同的长度,应采用Flowlayout,参考以下网页:
1、Flowlayout Sample 2、Flowlayout with adapter
接下来是把声音与图片加入到软件中。
《和码中文》第一册HeBook1有一千多个字形图片,7百多个语言文件,这些都在做苹果软件时完成了。文件都采用中文字命名,如:
字形图片:412533和-1.png 单字字音:请.mp3 词组语音:谢谢.mp3
但安卓系统的asset的文件只能用ASCII给文件命名,不允许用Unicode,或中文字命名。所以这些文件都要重新命名,还要让软件能找到所要的文件。
字形图片:412533-He2-1.png 单字字音:522332-qin3.mp3 词组语音:25322532-xie4xie4.mp3
更新数据库与Sqlite文件,在词组条目中加上一个PinYinString Field,以方便程序找到词组对应的语音文件。
星期六在做个程序自动给数据库表:HeChinese_CiZu加个PinYinString Column时,遇到了一个很难找到的错误:
Sql statement: select number, RTrim(LTrim(CiZu)) ,zishu, m1,m2,m3,m4, PinYinString from HeChinese_CiZu where selected = 1;
在Sql Server Management Studio中可以运行,但在
SqlConnection cnn = new SqlConnection("Server=(Local)\\SqlExpress; Trusted_Connection=true; database=<name>"); SqlCommand cmdSelect = cnn.CreateCommand(); cmdSelect.CommandText = "select number, RTrim(LTrim(CiZu)) ,zishu, m1,m2,m3,m4, PinYinString from HeChinese_CiZu where selected = 1"; 就有问题,将句中RTrim(LTrim(CiZu)),改为CiZu,就行。
这浪费了我好几个小时,记在这里,以便以后不出这样的错。
还要做个程序自动修改语音与图片的文件名。
Edited by user 2013年9月30日 6:01:34(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年10月02日
给中文名的图片与声音文件重新命名的辅助程序已完成。
处理的图片文件:1088个 处理的声音文件:612个
HeBook1.sqlite3重新做了,因为HeChinese_CiZu表加了Columns: m1,m2,m3,m4,PinYinString.
Sqlite3数据库,有个Bug: 如果这个数据库的第一个记录的第一个字是中文,那么这个第一个记录就读不出来。
这是我之前就发现的问题,这次又是这样,也许要把这个问题向Sqlite报告。
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年10月08日
课文主页的图片与语音功能基本完成。
做了一个ViewPager的页面,用于特别内容的显示。
ViewPager Sample
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年10月19日
Navigation Drawer 和 ViewPage 是安卓系统软件最新的两个UI界面要素,现在很多的软件都采用了。
《和码中文》教程也很适合采用这两个UI界面要素,现在基本做到了。
接下来是做具体的页面。
以下是书写练习的页面,采用了HeCharacter《汉字字形知识与技术》软件中的WritingView, 还参考的以下网帖: Gesture issue with ViewPager Fragment
[/size] Edited by user 2013年10月20日 20:23:57(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年10月20日
基本完成了字词输入练习模块,采用文章对照练习的方式。
1、采用已安装的和码输入法; 2、Created a Custom EditText view, 设置成Untouchable; 3、截住输入进来的字词,进行对比与操作; 4、CustomEditText class有个CallBack Function, 能让主页更换编码的图片,播放声音,显示编码。
参考了以下帖子: 1、InputConnection Class 2、InputConnection Wrapper 3、Create Custom EditText View and InputConnectionWrapper
Edited by user 2013年10月22日 2:15:43(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年10月21日
更多二字词组,多字词组,认读练习。
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年10月26日
完成测试模式:有听写与翻译练习
[/size] Edited by user 2013年10月27日 1:22:19(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年10月27日
完成查找模块:查找单字或词组,在25课中那些课中出现过。显示编码与英语解释,点击可听读音。
Edited by user 2013年11月4日 2:59:34(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年11月03日
1、词组在Page上显示,不采用FlowLayout(Code太复杂),而用pragmatically add TextView to LinearLayout; 2、添加了录音与播放功能,学习者可以试听自己的发声; 3、添加了计时功能,记录每课,用户一共花了多长时间; 4、解决了连续播放的问题; 5、修改课程Study页面。
Edited by user 2013年11月4日 3:09:49(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年11月10日
又开小差了,我工作的合同要到期了,又开始找工作了,找工作有挑战又有机遇,是个提高自己的艰难的过程。
有个大公司选我去面试,但之前要求完成一个小的Project,Project有几点要求,做做也很有意思:
1、Marster-Detial Structure,但不能用Storyboard,只能从empty project template做起; 2、要求从http://placehold.it/下载图片,要求用Asynchronous方法; 3、要支持iOS 5.0 以上的iPhone/iPad,要支持Rotation; 4、要使图片占满除Status Bar, navigation Bar之外的空间;并正确显示ImageView的宽度与高度。
我昨天基本做好这个Project,今天又在模拟器上测试了不同iOS版本的不同的设备。
主要参考资料:
1、Asynchronous NSURLRequest: 1)、Asynchronous loading image 2)、Asynchronous NSURLRequest
2. Master-Detail project without storyboard 1)、Master-Detail without storyboard 2)、Sample Project
3、Get screen width and height with orientation
self.view.frame 更好,不同的orientation,width and heigh会相应改变。
对于iOS7,self.view.frame,包括了Status Bar, 和 NavigationBar, 而之前的iOS版本都没有包括。
一个我不理解的问题:
[self.urlImageView startLoading:[NSString stringWithFormat:@"http://placehold.it/%dx%d&text=%@(%dx%d)", screenWidth,screenHeight,dayName,screenWidth,screenHeight]];
这句不能运行,但如在这句之前加: CGRect screenRect = self.view.frame; 就可以了。不知道是什么原因。
Edited by user 2013年11月10日 15:21:02(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年11月17日
在Google Play上加HeBook(《和码中文》第一册)Project,添加3个In App Products: hebook1.lesson_6to10, hebook1.lesson_11to15, hebook1.lesson_16to25
在Project中加人In App Purchase的功能。
Created HeBook1 keyStore.
主要参考资料:
Selling In-app Products
TrivialDrive Sample Project for In-App Purchase
2013年12月02日,当我要发布这个软件时,(用eclipse, project Export...),使用之前生成的keyStore HeBook1,我发现第二个密码记不到了啊,试了很多次都不对,浪费了两三个小时,很烦燥。
如果再生成一个新的Google Android application KeyStore, 但不能使用前次在Google Play上加的HeBook1 Application,只能重新Create application.
更烦闷的是,前次在Googel Play上建的HeBook1 application,uploaded的APK的Package name使用了net.HeZi.Android.HeBook1,也不能再在第二个Application中使用了,这就意谓着,我要更改我Android HeBook1 project的Package Name,这让我很恼火。
幸运的事,我试了一下删除在Google Play上的之前生成的HeBook1 application, 再做了一个新的HeBook1,当上upload HeBook1.apk(net.HeZi.Android.HeBook1)时,通过了。这才心里舒坦些。能通过的原因是,原来的HeBook1 application还是Draft status,没有发布。结果说明,只要软件没有发布,那么删除后,其package name还是可以再用的。
这次教训是,Create android application KeyStore时,一定要写下password, 与KeyStore 文件一起保存好。一旦这个KeyStore File or Password 丢失,现有的Google Play上的Application 就不能再更新了,同时PackageName 不能再使用了。
Edited by user 2013年12月16日 1:18:43(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年11月23日
每篇课文有6个页面做学习与练习,Study, Writing, Typing, more Phrases, Testing, search.
为避免重复的Code, 页面的Class分为三层:
1、Lesson_Base_Fragment; 2、Lesson_StudyBase_Fragment; 3、Lesson_StudyMain_Fragment, Lesson_Writing_Fragment, 等;
软件开始是学习Navigation Drawer 例子做的,每点击一个Drawer item, 都生成一个新的Fragment, 代替旧的Fragment, 放在主页上。 之后我又把ViewPager放入到主页的Fragment中,ViewPager的Adapter包含了上面说的6个课文学习与练习的页面。
后来认识到可以直接把ViewPager做主页的内容,这样就少了一层Fragment的包裹。这样每次点击Drawer item时,就生成一个新的ViewPager's adapter,这个adapter含6个页面。
6个课文学习练习的页面,都共用课文内容,因此就做了个LessonContentSingleton为6个页面(Fragment)共用。Singleton中保留了一个与Database的只读Connection, 也保留了danZiCursor, ciZuCursor,因为软件运行过程中,要读取数据库的数据,保持这个Connection,也许软件会快些。一般来说Database Connection用完后,要立即Close,第三方的SQLite Wraper都是这样做的。
有了,LessonContentSingleton后,每次点击Drawer item时(选不同的课),就可以更新Singleton的内容。是否可以不每次都生成一个新的ViewPager's adapter, 而只要更新其内的6个页面,就行呢?但这个方案不成,软件会Crash。
最后是,每次点击Drawer item时(选课),更新Singleton的内容,并且生成一个新的ViewPager's adapter给主页的ViewPager。
Quote: LessonContentSingleton lcs = LessonContentSingleton.getInstance(); lcs.setupContext(this); lcs.populateContent(bookNum, lessonNum);
studyMain_Fragment = Lesson_StudyMain_Fragment.create(); studyWriting_Fragment = Lesson_StudyWriting_Fragment.create(); typing_Fragment = Lesson_Typing_Fragment.create(); studyMorePhrase_Fragment = Lesson_StudyMorePhrase_Fragment.create(); testing_Fragment = Lesson_Testing_Fragment.create(); bookSearch_Fragment = Book_Search_Fragment.create(); fragmentList.add(studyMain_Fragment); fragmentList.add(studyWriting_Fragment); fragmentList.add(typing_Fragment); fragmentList.add(studyMorePhrase_Fragment); fragmentList.add(testing_Fragment); fragmentList.add(bookSearch_Fragment);
......... 每次点击Drawer item(选课)时:
lcs.populateContent(bookNum, lessonNum); LessonViewPagerAdapter mPagerAdapter = new LessonViewPagerAdapter(getFragmentManager()); mViewPager.setAdapter(mPagerAdapter); ......
private class LessonViewPagerAdapter extends FragmentStatePagerAdapter { public LessonViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragmentList.get(position); }
@Override public int getCount() { return 6;//fragmentList.size(); } }
新的Adapter,并没有生成新的(6个)Fragment, 只是使用保存在fragmentList中的Fragments, 软件能很好地运行。
由于Typing, and Testing Fragment中使用的EditText Control, 更新现有的EditText中的文字有些困难。因此在更换课程时,Typing_Fragment, Testing_Fragment要生成新的Instance, 而不能只靠更新原来的Instance的内容。 因此以下Statement,在程序中做了修改。
public Fragment getItem(int position) { return fragmentList.get(position); }
Edited by user 2013年12月16日 1:27:40(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2013年11月30日
上一个星期,为软件添加了,每课的说明,系列软件的链接。
又添加了一个模块:“学习报告单”,报告单记录学生从开始时间,到报告时间,学习了次数,写字练习笔画数,听音次数,输入单字个数,测试成绩,等。
报告单,可以用于学生交课后作业,也可以用于学员检测学习情况,做记录,留存,也可把图片传送到社交网上去。
软件进入了最后的测试与发布阶段。
Edited by user 2013年12月3日 0:13:43(UTC)
| Reason: Not specified
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2014-05-10
安卓系统《和码中文》第一册软件更新至和码字形技术5.0版。界面也有些更新。
可以用上帖的链接在Google Play或本网站下载。
|
|
|
|
等级: Administration
组: Administrators
注册时间: 2012/2/4(UTC) 帖子数量: 233
|
2015年10月12日
更新花了5个整天的时间全面更新了安卓系统《和码中文》第一册软件:
1、用Android Studio 1.4, 重建Project; 2、更新内容至和码5.1版; 3、增加字词编码练习页; 4、提高了软件的结构与软件质量。
又一次把安卓系统熟悉起来。
软件可以从以下网页下载:
点击下载:《汉字字形知识与技术》软件
Google Play 上《和码中文》第一册软件
Edited by user 2015年10月12日 21:20:17(UTC)
| Reason: Not specified
|
|
|
|
论坛跳转
您 不可以 发表新话题.
您 不可以 回复话题.
您 不可以 删除自己的发言.
您 不可以 编辑自己的发言.
您 可以 发表投票.
您 不可以 投票.