Android資源檔操作常見的七種典型案例(三)

來源:互聯網
上載者:User

Android中的資源是指非代碼部分,片、音頻、視頻、字元等資源。一般我們都是在assets中儲存原生的檔案,如:MP3檔案,Android程式不能直接存取,必須通過AssetManager類以二進位流的形式讀取。布局類型檔案一般都放在res檔案夾下,如:anim,drawable,layout,values,xml,raw,menu等等,這些資源都可以通過R資源類直接存取。assets中的資源很少用到,res中的資源經常用到。

下面我們繼續講解如何使用這些典型布局類型檔案:

七、使用菜單(menu)資源:任何視圖組件的建立方式都有兩種:一種是通過布局檔案中聲明建立;另一種通過在代碼中的建立,菜單也是如此。

Android中的菜單分為選項菜單、操作功能表和子功能表,都可以在XML檔案中聲明定義,在代碼中通過MenuInflater類使用。

1)典型菜單資源檔結構:

根項目,在根項目裡面會嵌套、子項目,元素總也可以嵌套形成子功能表。

2)

根項目沒有屬性,它包含、子項目

3)表示一個菜單組,相同的菜單可以一起設定其屬性,例如visable,enable和checkable等。屬性如下:

id:唯一標誌該菜單組的引用id。

menuCategory:對菜單進行分類,定義菜單的優先順序,有效值為container,system,secondary和alternative。

orderInCategory:一個分類排序整數。

checkableBehavior:選擇行為,單選、多選還是其他,有效值為none,all,single。

visable:是否可見,true或者false。

enabled:是否可用,true或者false。

4)表示功能表項目,包含在

或中的有效屬性。元素的屬性如下:

id:唯一標誌該菜單組的引用id。

menuCategory:菜單分類。

orderInCategory:一個分類排序整數。

title:功能表標題字串。

titleCondensed:濃縮標題,適合標題太長的時候使用。

icon:菜單的表徵圖。

alphabeticShortcut:字元快速鍵。

numberShortcut:數字快速鍵。

checkable:是否可選。

checked:是否已經備選。

visable:是否可見。

enabled:是否可用。

案例一:通過menu.xml建立菜單

1)、menu.xml檔案:


android:icon="@drawable/ic_launcher"
android:title="File">

android:id="@+id/noncheckable_group"
android:checkableBehavior="none">
android:id="@+id/newFile"
android:title="New"
android:alphabeticShortcut="n">

android:id="@+id/openFile"
android:title="Open"
android:alphabeticShortcut="o">

android:id="@+id/saveFile"
android:title="Save"
android:alphabeticShortcut="s">




android:title="Edit"
android:icon="@drawable/ic_launcher">

android:id="@+id/edit_group"
android:checkableBehavior="single">
android:id="@+id/cut"
android:title="Cut">

android:id="@+id/past"
android:title="Past">




android:title="Help"
android:icon="@drawable/ic_launcher">


android:title="About">

android:title="Exit">





test_menu.java檔案:

public class Test_Menu extends Activity{


private MenuInflater mi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_menu);
mi = new MenuInflater(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
mi.inflate(R.menu.menu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.about:
aboutAlert("本執行個體示範的是如何使用Xml菜單資源來定義菜單!");
break;
case R.id.exit:
exitAlert("真的要退出嗎?");
break;
}
return super.onOptionsItemSelected(item);
}

private void exitAlert(String msg){
//執行個體化AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//設定顯示資訊
builder.setMessage(msg)
.setCancelable(false)
//確定按鈕
.setPositiveButton("確定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// 結束Activity
finish();
}
//取消按鈕
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
return;
}
});
//建立對話方塊
AlertDialog alert = builder.create();
//顯示對話方塊
alert.show();
}

private void aboutAlert(String msg){
//執行個體化AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//設定顯示資訊
builder.setMessage(msg)
.setCancelable(false)
//確定按鈕
.setPositiveButton("確定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
}
});
//建立對話方塊
AlertDialog alert = builder.create();
//顯示對話方塊
alert.show();
}
}

案例二:直接在Activity類中建立菜單:

public class Option_Menu extends Activity {

//功能表項目ID常量
private static final int Item_Start = Menu.FIRST;
private static final int Item_Exit = Menu.FIRST+1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.option_menu);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, Item_Start, 0, "開始");
menu.add(0, Item_Exit, 0, "退出");
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
//功能表項目1被選擇
case Item_Start:
//這隻Activity標題
setTitle("開始遊戲");
break;
//功能表項目1被選擇
case Item_Exit:
setTitle("退出!");
break;
}
return true;
}
}

出處:http://blog.csdn.net/cl05300629/article/details/17717573 作者:佇望碧落

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.