this.setContentView(R.layout.import_book);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
File f = new File(\File[] files=f.listFiles();
fileNames = new String[files.length]; for (int i=0;i fileNames[i]=files[i].getName();} this.setListAdapter(new ArrayAdapter 4.3 用户单词学习模块的实现 该界面的布局文件为studyword_main.xml和studyword.xml。studyword_main. xml文件里显示两个文本框,构成一个框架布局FrameLayout。分别为未学习过的LIST和所有的LIST;同时显示各项LIST列表。用户单词学习列表界面如图4-3所示: 图4-3 用户单词学习列表界面 Studyword.xml布局文件界面上方布局了一个文本框:单词记忆。界面中间显示一个图片按钮和两个文本框,构成一个线性布局。图片按钮为发音标示,按钮的属性设置为@android:drawable/btn_default,文本框分别为拼写(spelling)与单词解释(info)。界面底部显示三个按钮,构成一个线性布局。按钮分别为:上一个,加入生词本,下一个。用户单词学习记忆界面如图4-4所示: 17 图4-4 用户单词学习记忆界面 重复加入生词本以后会提示:生词本中已包含这个单词;强制退出时会提示学习未完成,进行选择。 该学习模块的机器发音功能通过TTS引擎实现,TTS即TextToSpeech,将所指定的文本转成不同语言音频输出。如果用户手机支持TTS发音功能,首先设置发音语言tts.setLanguage(loc),判断语言可用后,使用Speak()方法可以直接在应用程序中实现语音功能tts.speak(list.get(currentnum).getSpelling(),TextToSpeech. QUEUE_ADD,null)。发音完成后,回收TTS即可,当确定应用程序不再需要TTS的相关功能后,可以在Activity的OnDestroy()方法中调用super.onDestroy()释放当前TTS实体所占用的资源。相关代码如下: public class TTS { ........... private TextToSpeech.OnInitListener ttsInitListener = new TextToSpeech.OnInitListener() { @Override public void onInit(int status){ Locale loc = new Locale(%us\ if (tts.isLanguageAvailable(loc) == TextToSpeech.LANG_AVAILABLE){ tts.setLanguage(loc); } tts.setOnUtteranceCompletedListener(ttsUtteranceCompletedListener);} 18 4.4 用户单词复习模块的实现 该界面的布局文件为reviewlayout.xml。界面的上方布局了一个文本框:单词复习。界面中间显示一个图片按钮和两个文本框,构成线性布局嵌套。图片按钮为发音标示,按钮的属性设置为@android:drawable/btn_default,文本框分别为拼写(spelling)与单词解释(info)。界面底部显示三个按钮,另有两个隐藏按钮,构成一个线性布局。按钮分别为:加入生词本,我记得,不记得了,记对了,记错了。 用户单词复习界面如图4-5所示: 图4-5 用户单词复习界面 按下我记得按钮文本框显示单词的解释,界面下方显示“记对了”“记错了”两个按钮,按下记对了进入下一个单词的复习。强制退出时会提示复习未完成,进行选择。 该单词复习模块首先需要对已学习过的list进行数据存储,这里使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定;使用该接口的edit获得 SharedPreferences.Editor对象,再通过SharedPreferences.Editor接口的putString方法保存数据。进入复习界面后,则通过getString读取保存的list。用户在复习选择时通过setVisibility()实现各个按钮控件的可见与否。复习完成时生成一个dialog对象,然后显示这个dialog。相关核心代码如下: private void UpdateView() { if (currentnum SharedPreferences setting = getSharedPreferences(\wordroid.model_preferences\MODE_PRIVATE); if(setting.getBoolean(\iftts\false)){ Thread thread =new Thread(new Runnable(){ public void run(){ try { 19 Thread.sleep(500); tts.speak(list.get(currentnum).getSpelling(),TextToSpeech.QUEUE_FLUSH, ........... null);} public void onClick(DialogInterface dialog, int whichButton) { tts.shutdown(); 4.5 用户单词测试模块的实现 用户单词测试界面的布局文件为test_list_item.xml,test_list.xml和test.xml。test_list.xml布局文件界面显示了一个文本框和一个使用列表(ListView),文本框为选择测试单元,使用列表控件包含所选词库所有的list并显示最高正确率。点击某个list后进入test.xml布局文件界面,该界面的上方布局了一个文本框:单词测试。界面中间显示一个文本框和一个单选钮组(RadioGroup),构成线性布局。文本框的属性设置为android:attr/textAppearanceSmall,内容为单词与单词的拼写;单选钮组包含四个单选框(RadioButton),分别为单词的可选解释。界面底部显示三个按钮,构成一个线性布局。按钮分别为:下一个,结束,加入生词本。用户单词测试界面如图4-6所示: finish(); Intent intent = new Intent(); intent.setClass(Review.this, ReviewMain.class); startActivity(intent);}}).create(); 图4-6 用户单词测试界面 用户选择单选框后系统进行判断,错误给出正确解释,正确进入下一个。 该单词测试模块通过单选钮监听事件setOnCheckedChangeListener()判断组件是 20 否被选中,给RadioGroup设置事件监听,然后用switch函数对用户所选单选项判断,最后通过DisplayToast事件进行正确与否的显示。相关核心代码如下: RadioGroup.OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (isCheck) { isCheck = false; switch (rightAns) { case 0: if ( checkedId == meaning0.getId() ) { score++; DisplayToast (\正确\} else { DisplayToast(\错误,正确答案是 \allList.get(opt[0]).getMeanning());} break; case 1: if ( checkedId == meaning1.getId() ) { score++; DisplayToast(\正确\ } else { DisplayToast(\错误,正确答案是 \allList.get(opt[1]).getMeanning() );}break; } 4.6 生词本模块的实现 生词本界面的布局文件为attention.xml。attention.xml布局文件界面显示了一个文本框和一个使用列表(ListView),文本框为生词本,使用列表控件包含用户所加入生词本中的生词,显示单词与单词解释。当选择某生词,显示编辑该单词与从生词本中删除选项。按下编辑该单词时,进入编辑生词本界面,该界面布局文件为editword.xml。界面上方显示了两个文本框和两个输入文本组件(EditText),一个文本框:单词与一个输入文本组件(单词拼写)构成线性布局,另一个文本框:中文与一个输入文本组件(中文解释)构成线性布局;界面中间布局了两个按钮:确定和取消。生词本界面与编辑生词本界面分别如图4-7,图4-8所示: 21 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Android的背单词软件设计与实现计算机毕业论文(5)在线全文阅读。
相关推荐: