Android 入門到精通 (介面編程#2-Menu)

來源:互聯網
上載者:User
      Android手機的菜單很美觀大方,其編程實現起來也簡潔明快,如果誰用過QT的介面編程,那麼看一眼Android的Menu編程會馬上會心微笑,
Option Menu:
看看下一段代碼:
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class HelloActivity extends Activity { 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // TODO Auto-generated method stub
  super.onCreateOptionsMenu(menu);
  menu.add(0, Menu.FIRST+1, 1, R.string.menu_open);
  menu.add(0, Menu.FIRST+2, 2, R.string.menu_edit);
  menu.add(0, Menu.FIRST+3, 3, R.string.menu_update);
  menu.add(0, Menu.FIRST+4, 4, R.string.menu_close);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  super.onOptionsItemSelected(item);
  switch(item.getItemId())
  {
  case Menu.FIRST + 1:
  {
   this.setTitle("Open Text!");
   break;
  }
  case Menu.FIRST + 2:
  {
   this.setTitle("Edit Text!");
   break;
  }
  case Menu.FIRST + 3:
  {
   this.setTitle("Update Text!");
   break;
  }
  case Menu.FIRST + 4:
  {
   this.setTitle("Close Text!");
   break;
  }
  }
  return true;
 }

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);      
        this.setContentView(R.layout.main);  
    }
}

只需要改寫父類Activity的兩個函數即可,方便之極。也就是說Android早就為你寫好了相關的代碼,你只要填一些功能表項目,再對每一個功能表項目的ItemId編寫具體的
作業碼就行了。
Android資源
上述代碼中有幾行可能對於入門者不好理解
1.添加菜單menu.add(0, Menu.FIRST+1, 1, R.string.menu_open);
              menu.add(0, Menu.FIRST+2, 2, R.string.menu_edit);代碼中的 R.string.menu_open/menu_edit
這些其實是指資源檔中的ID,映射到具體的資源,這裡是映射到字串資源menu_open, menu_edit,其具體的值可以看res/values/string.xml在這裡定義了字串的值:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, HelloActivity!</string>
    <string name="app_name">HelloWorld</string>
<string name="menu_open">Open</string>
<string name="menu_edit">Edit</string>
<string name="menu_update">Update</string>
<string name="menu_close">Close</string>
</resources>
在Android中,Activity顯示的布局也可在資源中定義,並且以可視化的方式來操作布局對應的XML檔案。可以看res/layout/main.xml這就是一個布局檔案,這裡指定了這個布局裡有哪些介面元素以及如何組織,相對位置,絕對位置等資訊。來看看其中內容:

<?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"
    >
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="MyTest OK yest!"></TextView>

</LinearLayout>

這裡就描述了布局為LinearLayout,包含了一個TextView,TextView的值為 MyTest.這個XML檔案被編譯後,可以使用R.layout.main的ID來從資源中取得。
於是Activity可以用setContentView(R.layout.main)來直接從資源取得布局,來繪製介面元素。
另一類常用資源就是圖片
在res/drawable/下面有一些圖片,你也可以新加一些圖片到這裡。然後就可以通過.R.drawable.xxx 的ID來從資源中取得對應的圖片。

Context Menu:
上面是手機底部菜單,Android還提供了Context操作功能表的操作,也相當簡單,看如下代碼:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.