第7讲用户界面菜单和对话框_第1页
第7讲用户界面菜单和对话框_第2页
第7讲用户界面菜单和对话框_第3页
第7讲用户界面菜单和对话框_第4页
第7讲用户界面菜单和对话框_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7讲 用户界面(4)菜单和对话框一、对话框AlertDialog 教材P49例子:按下程序退出键,弹出是否退出对话框方法一、匿名内部类写对话框确定按钮的事件响应public class MainActivity extends ActionBarActivity Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) / 监听键盘事件if(keyCode = KeyEvent.KEYCODE_BACK) /判断按下的是否退出键/弹出询问是否退出的对话框AlertDialog.Builder builder = new Ale

2、rtDialog.Builder(this);builder.setIcon(R.drawable.ic_launcher);builder.setTitle(系统提示);builder.setMessage(确定要退出么?);builder.setPositiveButton(确定, new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / 关闭ActivityMainActivity.this.finish(););builder.setNegativeButton(取消,

3、null);builder.show();return super.onKeyDown(keyCode, event);方法二、实例化一个内部类,作为事件监听器类注意:对话框的事件监听器类是:DialogInterface.OnClickListener,需要import android.content.DialogInterface.OnClickListener;而不是import android.view.View.OnClickListener;public class MainActivity extends ActionBarActivity Overridepublic bool

4、ean onKeyDown(int keyCode, KeyEvent event) / 监听键盘事件if(keyCode = KeyEvent.KEYCODE_BACK) /判断按下的是否退出键/弹出询问是否退出的对话框AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setIcon(R.drawable.ic_launcher);builder.setTitle(系统提示);builder.setMessage(确定要退出么?);builder.setPositiveButton(确定, listener

5、);builder.setNegativeButton(取消, listener);builder.show();return super.onKeyDown(keyCode, event);DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener()Overridepublic void onClick(DialogInterface dialog, int which) /注意和按钮事件的OnClickListener区别switch(which)case AlertDialog.BUTTO

6、N_POSITIVE: /按下的是确定按钮MainActivity.this.finish();break;case AlertDialog.BUTTON_NEGATIVE:break;default:break;二、菜单一个菜单包含多个菜单项和子菜单,子菜单其实也是菜单,因为它实现了Menu接口,因此子菜单也可以包含多个菜单项菜单分三类:(1)选项菜单步骤1、定义选项菜单的布局文件Res/menu/main.xml步骤2、将菜单显示在Activity上Overridepublic boolean onCreateOptionsMenu(Menu menu) / Inflate the men

7、u; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;步骤3、设置菜单的事件响应Overridepublic boolean onOptionsItemSelected(MenuItem item) / Handle action bar item clicks here. The action bar will/ automatically handle clicks on the Home/Up button, so lon

8、g/ as you specify a parent activity in AndroidM id = item.getItemId();switch(id)case R.id.exit:MainActivity.this.finish();break;case R.id.menuItem_red:tv_hello.setTextColor(Color.RED);break;case R.id.menuItem_blue:tv_hello.setTextColor(Color.BLUE);break;return super.onOptionsItemSelec

9、ted(item);(2)上下文菜单步骤1、设置上下文菜单,覆盖Activity的onCreateContextMenu方法public class MainActivity extends Activity private final int CONTEXT_MENU_RED=Menu.FIRST;private final int CONTEXT_MENU_GREEN=Menu.FIRST+1;private final int CONTEXT_MENU_BLUE=Menu.FIRST+2;/创建上下文菜单Overridepublic void onCreateContextMenu(Co

10、ntextMenu menu, View v,ContextMenuInfo menuInfo) / TODO Auto-generated method stubmenu.add(0, CONTEXT_MENU_BLUE, 0, 蓝色);menu.add(0, CONTEXT_MENU_GREEN, 0, 绿色);menu.add(0, CONTEXT_MENU_RED, 0, 红色);/super.onCreateContextMenu(menu, v, menuInfo);步骤2、将上下文菜单注册到组件上protected void onCreate(Bundle savedInstan

11、ceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_hello = (TextView) this.findViewById(R.id.tv_hello);layout = (RelativeLayout) this.findViewById(R.id.layout);/将上下文菜单加到layout上this.registerForContextMenu(layout);步骤3、编写上下文菜单的事件响应,覆盖Activity的onContextItemSelected方法 /

12、上下文菜单的事件响应Overridepublic boolean onContextItemSelected(MenuItem item) / TODO Auto-generated method stubswitch(item.getItemId()case CONTEXT_MENU_RED:layout.setBackgroundColor(Color.RED);break;case CONTEXT_MENU_BLUE:layout.setBackgroundColor(Color.BLUE);break;case CONTEXT_MENU_GREEN:layout.setBackgrou

13、ndColor(Color.GREEN);break;return super.onContextItemSelected(item);(3)Overflow Menu:没有物理menu键的手机,可以通过ActionBar的overflow按钮,来代替menu键。ActionBar:操作栏,替代了以前的标题栏(1)程序的图标(2)选项菜单的图标按钮(3)overflow按钮,里面存放了不常用的选项菜单如何定义ActionBar右边的菜单项(和选项菜单类似)步骤1、定义一个描述菜单的xml文件注意: android:showAsAction属性never:不会放在ActionBar ,只会出现在

14、底部菜单,使用物理的Menu键调出ifRoom:如果菜单项有图标和文字,如果有空间,就会将图标直接显示在ActionBar上always:一直显示在ActionBar上withText:只显示文字,折叠进overflow按钮中,通过按下右边的三点,弹出菜单项。 步骤2、将xml文件通过onCreateOptionsMenu设置到Activity上去(和原始的选项菜单的做法一样的)Overridepublic boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar i

15、f it is present.MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu);return true;步骤3、事件响应(和原始的选项菜单的做法一样的)onOptionsItemSelected步骤4、强制显示overflow按钮在Activity中定义方法,然后在Activity中去调用这个方法/强制显示overflow的三点private void getOverFlowMenu()ViewConfiguration viewConfig = ViewConfiguration.g

16、et(this);try Field overflowMenuField = ViewConfiguration.class.getDeclaredField(sHasPermanentMenuKey);if(null != overflowMenuField)overflowMenuField.setAccessible(true);overflowMenuField.setBoolean(viewConfig, false); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论