「Android入門」ContextMenuを利用して、Chronometerでタイマーを実現するプログラム
1.Main Activity:
public class MainActivity extends Activity {
private Chronometer timer;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.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.context_menu, menu);
// ヘッドアイコンの設定
menu.setHeaderIcon(R.drawable.icon);
//ヘッドタイトルの設定
menu.setHeaderTitle(" タイマー制御オプション “);
}
}
//メニュー号木を選択した後応答
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.timer_start:
// タイマーがクリアされる
timer.setBase(SystemClock.elapsedRealtime());
//タイマーを開始
timer.start();
break;
case R.id.timer_stop:
//タイマーを停止
timer.stop();
break;
case R.id.timer_reset:
//タイマーがクリアされる
timer.setBase(SystemClock.elapsedRealtime());
break;
}
return super.onContextItemSelected(item);
}
}
2. context_menu.xml
<?xml version="1.0″ encoding="utf-8″?>
<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>
3.Chronometerのコード:
<?xml version="1.0″ encoding="utf-8″?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width= “fill_parent"
android:layout_height = “fill_parent"
android:gravity = “center_horizontal"
>
<Chronometer
android:id ="@+id/chronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format="%s"
android:textSize="80px"
android:textColor="#00FF00″
/>
</LinearLayout >