空閑之餘,寫一篇。最近準備看看IOS的開發,據說可以在支援虛擬化的電腦上開發IOS的APP,而Object-C又跟Java的寫法有較大的區別(繁雜很多)。但是自己有台IOS終端機,想弄些東西玩玩。所以接下來除了繼續學習Android之外還兼修一下Object-C。
閑話不多說,接下來看看我們今天的學習內容,Menu菜單的設計。Menu菜單就是我們按下Menu鍵彈出來的菜單(這話好像有點廢),但是它的表現方式有很多種,可以是在當前視圖中彈出來,也可以是切換一個視圖的。
我們今天說的是在當前視圖中彈出來的。彈出兩個選項,一是改變Textview的內容,二是退出程式。好的,這就來:
第一步,建立一個工程Ep.Menu,視圖和活動的名稱我就不改了。
第二步,寫activity_main.xml,就是給Textview添加一個ID。
[java]
<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/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
<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/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
第三步,重點,寫MainActivity.java,主要寫菜單選項和選中後觸發的事件:
[java]
package com.example.ep.menu;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//擷取Menu菜單控制項
getMenuInflater().inflate(R.menu.main, menu);
//添加選項(組ID,選項ID,排序,標題)
menu.add(0,0,0,"set");
menu.add(0,1,1,"exit");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item){
super.onOptionsItemSelected(item);
//擷取選項ID
switch (item.getItemId()) {
case 0:
tv=(TextView)findViewById(R.id.tv1);
tv.setText("Joven");
break;
case 1:
this.finish();
break;
}
return true;
}
}
package com.example.ep.menu;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//擷取Menu菜單控制項
getMenuInflater().inflate(R.menu.main, menu);
//添加選項(組ID,選項ID,排序,標題)
menu.add(0,0,0,"set");
menu.add(0,1,1,"exit");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item){
super.onOptionsItemSelected(item);
//擷取選項ID
switch (item.getItemId()) {
case 0:
tv=(TextView)findViewById(R.id.tv1);
tv.setText("Joven");
break;
case 1:
this.finish();
break;
}
return true;
}
}
好了我們現在來預覽結果:
這裡之所以多了一個選項那是因為我們的menu檔案夾中的menu.xml裡面設定到有值,我們只需要刪除掉它就可以了。
好的再來看一次:
這次OK了,我們點擊set試試:
再點擊exit看看:
捕捉了好多次才能捕捉到如此經典的畫面,- -。
好了本章菜單的設計就說完了。同學們動手試試吧。