滁州学院毕业论文
return false;}});}}
5.2.5 Menu底部菜单框功能
下面我们将介绍menu的触发方式,通过对menu的介绍,我们将了解menu功能设计,对menu键的使用首先要建立menu菜单,为每个菜单选项绑定了一个图标和文字,代码如下底部菜单如图5-3所示。
String[] bottom_menu_itemName = { \增加\查找\删除\菜单\退出\ String fileName;
int[] bottom_menu_itemSource = { R.drawable.menu_new_user, R.drawable.menu_search, R.drawable.menu_delete,
R.drawable.controlbar_showtype_list, R.drawable.menu_exit, };//选择功能图片 响应menu点击事件时设置底部菜单是否可见,
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_MENU) {//如果点击menu键 loadBottomMenu();//载入menu功能
if(bottomMenuGrid.getVisibility() == View.VISIBLE) {//设置可视
if(searchLinearout != null && searchLinearout.getVisibility() == View.VISIBLE) {//如果选择不为空且视图为可视
searchLinearout.setVisibility(View.GONE);//设置可视视图不显示} bottomMenuGrid.setVisibility(View.GONE);//设置底部视图不显示 } else {
bottomMenuGrid.setVisibility(View.VISIBLE);//设置底部视图为可见 }}
return super.onKeyDown(keyCode, event);//返回一个点击的结果 }
图5-3 menu底部菜单
再监听底部菜单选项,代码如下:
bottomMenuGrid.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView> arg0, View arg1, int arg2,long arg3) {
22
滁州学院毕业论文
switch (arg2) { case 0: {/*增加*/} case 1: {/*查找*/} case 2: {/*删除*/} case 3: {/*菜单*/} case 4: {/*退出*/}
5.2.6 通信功能
下面的程序定义了用户打电话,发邮件,发短信的功能,如下的代码主要是运用了android操作系统自定义接口,运用这些接口可以实现用户的打电话、发短信、发邮件的功能。
首先定义了menu键,为menu添加了三个选项,并且为每一个item设置图标功,通讯功能如图5-4。
图5-4 通信功能界面
当建立好menu键以后为每一个MenuItem添加事件,添加了三个事件,代码功能如下: public boolean onMenuItemSelected(int featureId, MenuItem item) { //设置menu键选择功能
switch(item.getItemId()){通过switch选择不同的id case Menu.FIRST: { //将状态设置为打电话
status = Intent.ACTION_CALL; if(callData == null) {//加载可用的号码
23
滁州学院毕业论文
loadAvailableCallData();//加载电话号码 }if(callData.length == 0) {//提示没有可用的号码
Toast.makeText(this, \没有可用的号码!\ } else if(callData.length == 1) {
//如果之有一个可用的号码,这直接使用这个号码拨出
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse(\//设置一个新的intent对象
startActivity(intent);//开始活动事件 } else {
//如果有2个或者2个以上号码,弹出号码选择对话框 initNumChooseDialog();//选择号码 }break;//跳出 }
case Menu.FIRST+1: {
status = Intent.ACTION_SENDTO; //将状态设置为发短信 if(callData == null) {//如果号码为空 loadAvailableCallData();//载入号码
}if(callData.length == 0) {//提示没有可用的号码
Toast.makeText(this, \没有可用的号码!\ } else if(callData.length == 1) {
//如果之后又一个可用的号码,这直接使用这个号码拨出
Intent intent = new Intent(Intent.ACTION_SENDTO,Uri.parse(\设置一个新的intent对象
startActivity(intent); //开始活动事件 } else {
initNumChooseDialog();} break;}
//初始化号码
case Menu.FIRST+2: { if(user.email.equals(\
Toast.makeText(this, \没有可用的邮箱!\ } else {
Uri emailUri = Uri.parse(\设置uri为发送邮件的uri Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri); //设置一个新的intent对象
24
滁州学院毕业论文
startActivity(intent);//开始活动 }break;//退出}}
return super.onMenuItemSelected(featureId, item); //返回menu选择功能}
5.2.7显示所有、删除所有及备份功能
在bottom_menu 中菜单功能键中包含有显示所有、删除所有、以及备份SD卡功能,显示所有与联系人列表界面的思路一致,创建一个数据库帮助类从数据库中获得所有用户的信息放到list,通过setAdapter将listview与adapter相结合展示出来。删除所有是数据库中deleteAll这个方法将数据全部删除。备份文件时先AlertDialog.Builder来提示是否需要备份记录到SD卡,如果点击确定就通过helper.backupData(privacy);在数据库中执行备份的方法。详细代码如下。显示所有,删除所有,备份功能如图5-5。
mainMenuGrid.setOnItemClickListener(new OnItemClickListener(){ public void onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3) {switch(arg2){ case 0:{
DBHelper helper = new DBHelper(Main.this); list = helper.getAllUser(privacy);
adapter = new SimpleAdapter( Main.this, list,R.layout.listitem, new String[]{\
new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone}); lv.setAdapter(adapter);//显示所有数据 mainMenuDialog.dismiss(); break;} case 1:{
AlertDialog.Builder builder = new AlertDialog.Builder(Main.this); confirmDialog = builder.create(); builder.setTitle(\是否删除所有!?\
builder.setPositiveButton(\确定\public void onClick(DialogInterface dialog, int which) { DBHelper helper = new DBHelper(Main.this); helper.deleteAll(0);
list = helper.getAllUser(privacy); adapter = new SimpleAdapter(Main.this,
R.layout.listitem,
25
list,
滁州学院毕业论文
new String[]{\
new int[]{R.id.user_image,R.id.tv_name,R.id.tv_mobilephone}); lv.setAdapter(adapter);//显示所有数据 mainMenuDialog.dismiss();}});
builder.setNegativeButton(\取消\new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {confirmDialog.dismiss(); builder.create().show(); break; case 2:{
mainMenuDialog.dismiss(); new AlertDialog.Builder(Main.this) .setTitle(\是否需要备份记录到SD卡?\
.setPositiveButton(\确定\ public void onClick(DialogInterface dialog, int which) { LayoutInflater li = LayoutInflater.from(Main.this);
View backup_view = li.inflate(R.layout.backup_progress, null); progressDialog = new AlertDialog.Builder(Main.this) .setTitle(\备份正在进行中...\ .setView(backup_view) .create();
progressDialog.show();
DBHelper helper = new DBHelper(Main.this); helper.backupData(privacy);
ProgressBar bar = (ProgressBar) backup_view.findViewById(R.id.pb_backup); Button btn_backup_ok = (Button)backup_view.findViewById(R.id.btn_backuup_ok); bar.setMax(list.size()); for(int i=0;i<=list.size();i++) { bar.setProgress(i);
}
}
}});
progressDialog.setTitle(\备份完成!一共 \条记录\ btn_backup_ok.setVisibility(View.VISIBLE);
btn_backup_ok.setOnClickListener(new OnClickListener() { public void onClick(View v) { progressDialog.dismiss();
26