一个毕业设计 小学生英语app

来源:互联网 发布:linux版本查看命令 编辑:程序博客网 时间:2024/05/16 02:05




小学生英语APP文档说明

主要源码的说明文档

├─adapter

│      GridViewItem.java   游戏图鉴列表每一项的布局

│      MyAdapter.java     游戏图鉴列表的适配器

├─dc

│      app.java         app

│      ksyxActivity.java    开始游戏界面

│      MainActivity.java    主界面

│      MusicService.java    播放后台音乐

│      setActivity.java     设置界面

│      yxsmActivity.java   游戏说明界面

│      yxtjActivity.java    游戏图鉴

├─fragment

│      itemAdapter.java     每一项单词适配器

│      itemfragment.java    每一项单词显示界面

├─Interface

│      onclick.java     点击选择答案时回调

│      oninit.java     tts回调

├─model

│      danci.java   单词数据

├─utils

│  │  CopyRaw.java   复制单词列表

│  │  DBHelper.java    数据库工具

│  │  Helper.java    存储配置值接口

│  │  Speaker.java    tts播放接口

│  │

│  └─easyfont

│          EasyFonts.java    自定义字库,显示分数

│          FontSourceProcessor.java

└─view

       CountdownView.java   一个倒计时view,显示15秒倒计时

       CustomCountDownTimer.java

 

源码设计流程:

主界面:MainActivity ,复制数据库

datapath = "/data/data/" + this.getPackageName().toString()

+ "/databases";

new MyTask().execute("");

播放音乐:

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

if (helper.getMusiconoff()) {// 如果开了,则播放

startService(intent);

}

}

点击各个按钮,进入对应界面:

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

 

switch (v.getId()) {

case R.id.ksyx:

startActivity(new Intent(this, ksyxActivity.class));

break;

case R.id.xzjc:

new AlertDialog.Builder(this)

.setTitle("选择教材")

.setItems(new String[] { "第一章", "第二章" },

new OnClickListener() {

 

@Override

public void onClick(DialogInterface dialog,

int which) {

// TODO Auto-generated method stub

Intent start=new Intent(MainActivity.this,

ksyxActivity.class);

start.putExtra("zhangjie", getzhangjie(which));//获取到第几章节

startActivity(start);

}

}).setNegativeButton("确定", null).show();

break;

case R.id.yxtj:

startActivity(new Intent(this, yxtjActivity.class));

break;

case R.id.yxsm:

startActivity(new Intent(this, yxsmActivity.class));

break;

case R.id.yxsz:

startActivity(new Intent(this, setActivity.class));

break;

}

 

}

 

开始游戏界面主要流程:

 

// 如果选择的是进入章节,则获取章节的单词,否则获取全部

String zhangjie = getIntent().getStringExtra("zhangjie");

if (zhangjie != null && (!zhangjie.equals(""))) {

// 获取数据列表

items = new DBHelper(this).getzhangjie(zhangjie);

;  

// 获取存储的进度

mCurrPageIndex = helper.getIntValue(zhangjie, 0);

keyjindu = zhangjie;

} else {

items = new DBHelper(this).getAllCotacts();

mCurrPageIndex = helper.getIntValue(keyjindu, 0);

}

 

显示分数:

score = helper.getScore();

scoreView = (TextView) findViewById(R.id.score);

scoreView.setText(score + "");

scoreView.setTypeface(EasyFonts.num(this));//设置字体

 

启动一个倒计时

mCountdownView.start(time1);

mCountdownView.setOnCountdownEndListener(new OnCountdownEndListener() {

 

@Override

public void onEnd(CountdownView cv) {

// TODO Auto-generated method stub

next(false, false);  //时间到自动进入下一个,显示错误

}

});

两个按钮,进行前后选择

prev = (ImageButton) findViewById(R.id.prev);

next = (ImageButton) findViewById(R.id.next);

prev.setOnClickListener(this);

next.setOnClickListener(this);

。。。。。。。。。。。。。。

case R.id.prev:

if (mCurrPageIndex >= 1) {

mPager.setCurrentItem(mCurrPageIndex - 1);

}

break;

case R.id.next:

if (mCurrPageIndex < size - 1) {

mPager.setCurrentItem(mCurrPageIndex + 1);

}

 

 

设置viewpage

 

mAdapter = new itemAdapter(getSupportFragmentManager(), this);适配器

size = items.size();  拿到总数

mAdapter.setItems(items);

mPager.setAdapter(mAdapter);

mPager.setOffscreenPageLimit(2);// 限制缓存数目为2,节省内存

mPager.setCurrentItem(mCurrPageIndex); 设置当前的

mPager.setOnPageChangeListener(new OnPageChangeListener() {

 

@Override

public void onPageSelected(int arg0) {

// TODO Auto-generated method stub

if (arg0 != mCurrPageIndex) {

isfirst = false; // 只要移动,就会改变

}

mCurrPageIndex = arg0;

// 如果向前,则存储当前

if (helper.getIntValue(keyjindu, 0) < mCurrPageIndex)

helper.putValue(keyjindu, mCurrPageIndex);

mCountdownView.start(time1); 重启倒计时

playText();  播放当前的单词

}

 

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

// TODO Auto-generated method stub

 

}

 

@Override

public void onPageScrollStateChanged(int arg0) {

// TODO Auto-generated method stub

 

}

});

 

 

整体逻辑整理:

 

        加载数据,显示,前后按钮切换可进入各个单词,定时器在15秒后不做选择,则直接显示错误,进入下一个。

        选择正确,加分,下一个。选择错误,不加分,下一个。

        

技术点:

1:播放音乐:MusicService.java  Service的写法和启动

2:分数存储,Helper.java  SharedPreferences的写法和用法

3:单词读音 Speaker.java  TTS的实现和用法

4:复制数据库 CopyRaw.java复制数据到databases区域,为后面的操作准备

5:数据库操作DBHelper.java主要是单词的读写查询方法

 

毕设可以写的建议:

 

AndroidManifest.xml的用法

SharedPreferences Service的写法和启动  

TTS的实现和用法

复制数据到databases 数据库查询

签名

混淆

 

 

 

        


0 0