功能:Menu包括 计时、停止、清零
长按计时器控件 弹出上下文菜单 包括开始计时、终止计时、清零
重点:长按计时器弹出上下文菜单。
//长按计时器时,出现上下文菜单
this.registerForContextMenu(timer);
//创建上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
// ContextMenu的Item不支持Icon,所以不用再资源文件中,为它们设定图标
if (v.getId() == R.id.chronometer)
{
//加载xml菜单布局文件
this.getMenuInflater().inflate(R.menu.main, menu);
// 设定头部图标
menu.setHeaderIcon(R.drawable.ic_launcher);
// 设定头部标题
menu.setHeaderTitle(" 计时器控制选项 ");
}
}
//选择菜单项后的响应
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.timer_start:
// 将计时器清零
timer.setBase(SystemClock.elapsedRealtime());
//开始计时
timer.start();
return true;
case R.id.timer_stop:
//停止计时
timer.stop();
return true;
case R.id.timer_reset:
//将计时器清零
timer.setBase(SystemClock.elapsedRealtime());
return true;
}
return false;
//return super.onContextItemSelected(item);
}
MainActivuty.java
package com.example.timer1;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Chronometer;
public class MainActivity extends Activity {
private Chronometer timer;
final static int menu_start = Menu.FIRST;
final static int menu_stop = Menu.FIRST+1;
final static int menu_setting = Menu.FIRST+2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获得计时器对象
timer = (Chronometer)this.findViewById(R.id.chronometer);
//长按计时器时,出现上下文菜单
this.registerForContextMenu(timer);
}
//创建上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
// ContextMenu的Item不支持Icon,所以不用再资源文件中,为它们设定图标
if (v.getId() == R.id.chronometer)
{
//加载xml菜单布局文件
this.getMenuInflater().inflate(R.menu.main, menu);
// 设定头部图标
menu.setHeaderIcon(R.drawable.ic_launcher);
// 设定头部标题
menu.setHeaderTitle(" 计时器控制选项 ");
}
}
//选择菜单项后的响应
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.timer_start:
// 将计时器清零
timer.setBase(SystemClock.elapsedRealtime());
//开始计时
timer.start();
return true;
case R.id.timer_stop:
//停止计时
timer.stop();
return true;
case R.id.timer_reset:
//将计时器清零
timer.setBase(SystemClock.elapsedRealtime());
return true;
}
return false;
//return super.onContextItemSelected(item);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
menu.add(0,menu_start,0,"计时");
menu.add(0,menu_stop,1,"停止");
menu.add(0,menu_setting,2,"清零");
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
// return super.onOptionsItemSelected(item);
switch(item.getItemId())
{
case menu_start:
// 将计时器清零
timer.setBase(SystemClock.elapsedRealtime());
//开始计时
timer.start();
return true;
case menu_stop:
//停止计时
timer.stop();
return true;
case menu_setting:
timer.setBase(SystemClock.elapsedRealtime());
return true;
}
return false;
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Chronometer
android:id="@+id/chronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="23dp"
android:layout_toRightOf="@+id/textView1"
android:format="%s"
android:textColor="#00FF00"
android:textSize="80px" />
</RelativeLayout>
main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/timer_start" android:title=" 开始计时 " />
<item android:id="@+id/timer_stop" android:title=" 终止计时 " />
<item android:id="@+id/timer_reset" android:title=" 清零 " />
</menu>