弹出式菜单扩展学习
看其它应用软件时使用了很多的弹出菜单,蛮好的,顺带学习了下,写了个小DEMO,里面穿插的讲了下系统级的dialog使用小巧门,希望与大家交流学习。。下面来看代码: packagecom.xiaoma.popupmenu.demo; importandroid.app.Activity; importandroid.app.Dialog; importandroid.app.ProgressDialog; importandroid.os.Bundle; importandroid.util.Log; importandroid.view.MenuInflater; importandroid.view.MenuItem; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.PopupMenu; importandroid.widget.Toast; importandroid.widget.PopupMenu.OnMenuItemClickListener; /** *@Title:PopupMenuDemoActivity.java *@Packagecom.xiaoma.popupmenu.demo *@Description:弹出式菜单测试类 *@authorMZH */ publicclassPopupMenuDemoActivityextendsActivityimplementsOnClickListener,OnMenuItemClickListener{ privateButtonshow; /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } /* *初始化实现 */ privatevoidinit(){ show=(Button)findViewById(R.id.button1); show.setOnClickListener(this); } /* *添加监听器(non-Javadoc) *@seeandroid.view.View.OnClickListener#onClick(android.view.View) */ @Override publicvoidonClick(Viewv){ if(v.getId()==R.id.button1){ showPopup(v); } } /* *弹出对话框实现 */ privatevoidshowPopup(Viewv){ PopupMenupopup=newPopupMenu(getApplicationContext(),v); popup.setOnMenuItemClickListener(this); MenuInflaterinflater=popup.getMenuInflater(); inflater.inflate(R.menu.menutest,popup.getMenu()); popup.show(); } /* *给选择的项添加监听器(non-Javadoc) */ @Override publicbooleanonMenuItemClick(MenuItemitem){ switch(item.getItemId()){ caseR.id.new_game: Log.i("KKK","奇怪"); ShowDialog(item.getTitle()); break; caseR.id.help: ShowDialog(item.getTitle()); break; caseR.id.file: ShowDialog(item.getTitle()); break; caseR.id.create_new: ShowDialog(item.getTitle()); break; caseR.id.open: ShowDialog(item.getTitle()); break; default: break; } returnfalse; } /* *弹出消息方法实现 *因为安卓系统中也自带这样一个临时弹出dialog的方法 *showDialog(intid),所以小马在此处违背了下一般的命名 *规则,起名:ShowDialog(),下面顺带讲下系统自带的临时dialog的实现 */ privatevoidShowDialog(CharSequencech){ Toast.makeText(getApplicationContext(),ch,Toast.LENGTH_SHORT).show(); } /** *在使用系统级自带的showDialog(intid)方法时,必须重载下面这个方法哦 */ @Override protectedDialogonCreateDialog(intid){ ProgressDialogdialog=newProgressDialog(this); dialog.setMessage("小马临时放的字符串一"); returndialog; } /** *在使用系统级自带的showDialog(intid,intid,Bundleargs)方法时, *必须重载下面这个方法 *id:dialog的ID *args为提供给showDialog的第二个方法 */ @Override protectedDialogonCreateDialog(intid,Bundleargs){ ProgressDialogdialog=newProgressDialog(this); dialog.setMessage("小马临时放的字符串二"); returndialog; } } 加载的菜单布局如下: <?xmlversion="1.0"encoding="utf-8"?> <menuxmlns:android="http://schemas.android.com/apk/res/android"> <itemandroid:id="@+id/new_game" android:icon="@drawable/ic_launcher" android:title="新游戏" android:showAsAction="ifRoom"/> <itemandroid:id="@+id/help" android:icon="@drawable/ic_launcher" android:title="帮助"/> <itemandroid:id="@+id/file" android:title="嵌套"> <menu> <itemandroid:id="@+id/create_new" android:title="开始新游戏"/> <itemandroid:id="@+id/open" android:title="开始"/> </menu> </item> <groupandroid:id="@+id/group_delete"> <itemandroid:id="@+id/menu_archive" android:title="组员一"/> <itemandroid:id="@+id/menu_delete" android:title="组员二"/> </group> </menu> 很简单的实现,每天进步一点点,吼吼。。学习再学习!加油。。。 附件:http://down.51cto.com/data/2359943 本文转自华华世界 51CTO博客,原文链接:http://blog.51cto.com/mzh3344258/791569,如需转载请自行联系原作者