实验5 数独游戏界面设计

【目的】

实现数独游戏的完整界面设计

【要求】

1       显示与隐藏ActionBar

2      使用ActionBar显示OptionMenu的菜单项MenuItem

3    在Activity类中添加和重写以下方法

【过程】

 

1      显示与隐藏ActionBar

 

sdk
        android:minSdkVersion="18"
        android:targetSdkVersion="18" />

 

 2  使用ActionBar显示OptionMenu的菜单项MenuItem

<item
        android:id="@+id/item1"
        android:alphabeticShortcut="B"
        android:orderInCategory="200"
        android:title="返回">
    
    <item
        android:id="@+id/help"
        android:title="帮助"
        android:showAsAction="always"/>
    
      <item
        android:id="@+id/about"
        android:title="关于"
        android:showAsAction="always"/>
      
      <item
        android:id="@+id/clock"
        android:title="时钟"
        android:showAsAction="always"
        android:actionLayout="@layout/clock"/>

 

3        在Activity类中添加和重写以下方法
public boolean onCreateOptionsMenu(Menu menu) {
  // TODO Auto-generated method stub
  MenuInflater inflater = new MenuInflater(this);
  inflater.inflate(R.menu.main, menu);
  return super.onCreateOptionsMenu(menu);
 }
 
 public boolean onOptionsItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  switch (item.getItemId()) {
  case android.R.id.home:
   //创建启动MainActivity的Intent
   Intent intent=new Intent(this,MainActivity.class);
   //添加额外的Flag,将Activity栈中处于MainActivity之上的Activity弹出
   intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   startActivity(intent);
   break;
  case R.id.help:
   Intent intent1=new Intent(this,HelpActivity.class);
   startActivity(intent1);
   break;
  default:
   break;
  }
  return super.onOptionsItemSelected(item);
 }

 

4    运行结果

5    使用程序图标导航

在protected void onCreate(Bundle savedInstanceState)方法中添加以下代码,对ActionBar初始化设置:
ActionBar actionBar = getActionBar();//获取ActionBar对象
        actionBar.setDisplayShowHomeEnabled(true);//显示应用程序图标
        actionBar.setDisplayHomeAsUpEnabled(true);//将应用程序图标转变为可点击图标,并添加一个返回箭头。
实现点击程序图标后返回到上一个页面(程序图标的ID默认为Android.R.id.home)
@Override
    Public Boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case android.R.id.home:
            //创建启动MainActivity的Intent
            Intent intent=new Intent(this,MainActivity.class);
            //添加额外的Flag,将Activity栈中处于MainActivity之上的Activity弹出
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            break;

        default:
            break;
        }
        returnsuper.onOptionsItemSelected(item);
    }

运行结果

6      添加Action View

ActionBar除了可以显示普通的ActionItem之外,还可以显示普通的UI控件,如在ActionBar上显示一个时钟。

方法:定义Action Item时使用android:actionLayout="@layout/clock"属性指定ActionView对应的视图布局资源。

步骤:

在layout文件夹中新建一个显示时钟的布局文件clock.xml

"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <AnalogClock
        android:id="@+id/analogClock1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

在菜单资源文件main.xml中添加Action Item
 <item
        android:id="@+id/clock"
        android:title="时钟"
        android:showAsAction="always"
        android:actionLayout="@layout/clock"/>
查看效果


    【实验小结】

通过这次试验,加深了对跳转和界面设置的理解,也加深了我对安卓程序的了解。