일반적인 Android 옵션 메뉴 스타일 집합

19025 단어 Android메뉴
메뉴 는 사용자 인터페이스 에서 가장 흔히 볼 수 있 는 요소 중 하나 로 사용 이 매우 빈번 합 니 다.Android 에서 메뉴 는 다음 과 같은 세 가지 로 나 뉘 어 있 습 니 다.옵션 메뉴(OptionsMenu),컨 텍스트 메뉴(ContextMenu)와 하위 메뉴(SubMenu)입 니 다.오늘 은 OptionsMenu 입 니 다.
개술
  • public boolean onCreateOptionsMenu(Menu menu):이 방법 으로 OptionsMenu 를 호출 합 니 다
  • public boolean onOptionsItemSelected(MenuItem item):메뉴 항목 을 선택 한 후 발생 하 는 동작 입 니 다
  • public void onOptionsMenuClosed(Menu menu):메뉴 가 닫 힌 후 발생 하 는 동작 입 니 다
  • Public boolean onPrepare Options Menu(Menu menu):옵션 메뉴 가 표시 되 기 전에 onPrepare Options Menu 방법 이 호출 됩 니 다.이 방법 으로 당시 상황 에 따라 메뉴 를 조정 할 수 있 습 니 다
  • public boolean onMenu Opened(int featureId,Menu menu):열 리 기만 하면 발생 하 는 동작 입 니 다
  • 기본 스타일
    기본 스타일 은 화면 밑 에 메뉴 를 팝 업 하 는 것 입 니 다.이 메뉴 는 옵션 메뉴 Options Menu 라 고 부 릅 니 다.일반적인 상황 에서 옵션 메뉴 는 최대 2 줄 마다 3 개의 메뉴 항목 을 표시 합 니 다.이 메뉴 항목 들 은 아이콘 이 있 고 Icon Menus 라 고도 부 릅 니 다.6 개 이상 이면 6 개 항목 부터 숨겨 지고 6 개 항목 에 More 가 나타 납 니 다.More 를 클릭 해 야 여섯 번 째 항목 과 이후 메뉴 항목 이 나 옵 니 다.이 메뉴 항목 들 은 Expanded Menus 라 고도 합 니 다.소개 하 겠 습 니 다.
    
    <?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:layout_width="wrap_content"
     android:layout_height="wrap_content" android:text="    Menu       "
     android:id="@+id/TextView02" />
    
    </LinearLayout>
    
    2,재 부팅 onCreateOptionsMenu(Menu menu)방법
    onCreateOptionsMenu(Menu menu)방법 을 다시 불 러 오고 이 방법 에 메뉴 항목 을 추가 한 다음 true 로 돌아 갑 니 다.false 라면 메뉴 가 표시 되 지 않 습 니 다.
    
    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
     /*
     * 
     * add()       ,   :
     * 
     * 1、  ,         Menu.NONE,
     * 
     * 2、Id,     ,Android    Id        
     * 
     * 3、  ,                   
     * 
     * 4、  ,       
     */
    
     menu.add(Menu.NONE, Menu.FIRST + 1, 5, "  ").setIcon(
     android.R.drawable.ic_menu_delete);
    
     // setIcon()         ,             ,       , 
     // android.R           ,           R   
    
     menu.add(Menu.NONE, Menu.FIRST + 2, 2, "  ").setIcon(
     android.R.drawable.ic_menu_edit);
     menu.add(Menu.NONE, Menu.FIRST + 3, 6, "  ").setIcon(
     android.R.drawable.ic_menu_help);
     menu.add(Menu.NONE, Menu.FIRST + 4, 1, "  ").setIcon(
     android.R.drawable.ic_menu_add);
     menu.add(Menu.NONE, Menu.FIRST + 5, 4, "  ").setIcon(
     android.R.drawable.ic_menu_info_details);
     menu.add(Menu.NONE, Menu.FIRST + 6, 3, "  ").setIcon(
     android.R.drawable.ic_menu_send);
    
     return true;
    
     }
    
    3.메뉴 항목 등록 이벤트
    메뉴 항목 등록 이벤트 에 onOptionsItemSelected(MenuItem item)방법 사용 하기
    
    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
    
     case Menu.FIRST + 1:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 2:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 3:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 4:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 5:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 6:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
    
     }
    
     return false;
    
     }
    
    4.기타 필요 에 따라 무 거 운 짐 을 실 을 수 있 습 니 다.
    전체 코드
    
    package com.wjq.menu;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;
    
    public class DefaultMenu extends Activity {
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     }
    
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
     /*
     * 
     * add()       ,   :
     * 
     * 1、  ,         Menu.NONE,
     * 
     * 2、Id,     ,Android    Id        
     * 
     * 3、  ,                   
     * 
     * 4、  ,       
     */
    
     menu.add(Menu.NONE, Menu.FIRST + 1, 5, "  ").setIcon(
    
     android.R.drawable.ic_menu_delete);
    
     // setIcon()         ,             ,       , 
     // android.R           ,           R   
    
     menu.add(Menu.NONE, Menu.FIRST + 2, 2, "  ").setIcon(
     android.R.drawable.ic_menu_edit);
     menu.add(Menu.NONE, Menu.FIRST + 3, 6, "  ").setIcon(
     android.R.drawable.ic_menu_help);
     menu.add(Menu.NONE, Menu.FIRST + 4, 1, "  ").setIcon(
     android.R.drawable.ic_menu_add);
     menu.add(Menu.NONE, Menu.FIRST + 5, 4, "  ").setIcon(
     android.R.drawable.ic_menu_info_details);
     menu.add(Menu.NONE, Menu.FIRST + 6, 3, "  ").setIcon(
     android.R.drawable.ic_menu_send);
     return true;
    
     }
    
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
     switch (item.getItemId()) {
    
     case Menu.FIRST + 1:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 2:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 3:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 4:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 5:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
     case Menu.FIRST + 6:
     Toast.makeText(this, "        ", Toast.LENGTH_LONG).show();
     break;
    
     }
    
     return false;
    
     }
    
     @Override
     public void onOptionsMenuClosed(Menu menu) {
     Toast.makeText(this, "       ", Toast.LENGTH_LONG).show();
     }
    
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
     Toast.makeText(this,
     "        onPrepareOptionsMenu      ,                    ",
     Toast.LENGTH_LONG).show();
    
     //     false,         menu       ,onCreateOptionsMenu        
    
     return true;
    
     }
    }
    
    5.효과 탐색

    3.사용자 정의 스타일
    
    <?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"
     >
    <GridView
     android:id="@+id/gridview"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:numColumns="4"
     android:verticalSpacing="10dip"
     android:horizontalSpacing="10dip"
     android:stretchMode="columnWidth"
     android:gravity="center"
     />
     
    </LinearLayout>
    
    먼저 메뉴 인터페이스 를 사용자 정의 합 니 다.저 는 GridView 로 메뉴 항목,4 열 3 줄 을 포함 합 니 다.
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/RelativeLayout_Item"
     android:layout_width="fill_parent" android:layout_height="wrap_content"
     android:paddingBottom="5dip">
     <ImageView android:id="@+id/item_image"
     android:layout_centerHorizontal="true" android:layout_width="wrap_content"
     android:layout_height="wrap_content"></ImageView>
     <TextView android:layout_below="@id/item_image" android:id="@+id/item_text"
     android:layout_centerHorizontal="true" android:layout_width="wrap_content"
     android:layout_height="wrap_content" android:text="  "></TextView>
    </RelativeLayout>
    
    메뉴 항목 의 현실 스타일,아이콘 하나,텍스트 하나.
    3.정의
    
    private boolean isMore = false;// menu      
     AlertDialog menuDialog;// menu  Dialog
     GridView menuGrid;
     View menuView;
     
     private final int ITEM_SEARCH = 0;//   
     private final int ITEM_FILE_MANAGER = 1;//     
     private final int ITEM_DOWN_MANAGER = 2;//     
     private final int ITEM_FULLSCREEN = 3;//   
     private final int ITEM_MORE = 11;//   
    
     
     /**      **/
     int[] menu_image_array = { R.drawable.menu_search,
     R.drawable.menu_filemanager, R.drawable.menu_downmanager,
     R.drawable.menu_fullscreen, R.drawable.menu_inputurl,
     R.drawable.menu_bookmark, R.drawable.menu_bookmark_sync_import,
     R.drawable.menu_sharepage, R.drawable.menu_quit,
     R.drawable.menu_nightmode, R.drawable.menu_refresh,
     R.drawable.menu_more };
     /**      **/
     String[] menu_name_array = { "  ", "    ", "    ", "  ", "  ", "  ",
     "    ", "    ", "  ", "    ", "  ", "  " };
     /**     2 **/
     int[] menu_image_array2 = { R.drawable.menu_auto_landscape,
     R.drawable.menu_penselectmodel, R.drawable.menu_page_attr,
     R.drawable.menu_novel_mode, R.drawable.menu_page_updown,
     R.drawable.menu_checkupdate, R.drawable.menu_checknet,
     R.drawable.menu_refreshtimer, R.drawable.menu_syssettings,
     R.drawable.menu_help, R.drawable.menu_about, R.drawable.menu_return };
     /**     2 **/
     String[] menu_name_array2 = { "    ", "    ", "    ", "    ", "    ",
     "    ", "    ", "    ", "  ", "  ", "  ", "  " };
    
    
    @Override
     public boolean onMenuOpened(int featureId, Menu menu) {
     if (menuDialog == null) {
     menuDialog = new AlertDialog.Builder(this).setView(menuView).show();
     } else {
     menuDialog.show();
     }
     return false;//    true      menu
     }
    
    처음 열 면 보 기 를 설정 합 니 다.그렇지 않 으 면 menu Dialog 보 기 를 직접 표시 합 니 다. 
    
    private SimpleAdapter getMenuAdapter(String[] menuNameArray,
     int[] imageResourceArray) {
     ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
     for (int i = 0; i < menuNameArray.length; i++) {
     HashMap<String, Object> map = new HashMap<String, Object>();
     map.put("itemImage", imageResourceArray[i]);
     map.put("itemText", menuNameArray[i]);
     data.add(map);
     }
     SimpleAdapter simperAdapter = new SimpleAdapter(this, data,
     R.layout.item_menu, new String[] { "itemImage", "itemText" },
     new int[] { R.id.item_image, R.id.item_text });
     return simperAdapter;
     }
    
    메뉴 에 메뉴 항목 을 추가 합 니 다.
    
    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
     menu.add("menu");//       
     return super.onCreateOptionsMenu(menu);
     }
     
    @Override
     protected void onCreate(Bundle savedInstanceState) {
     // TODO Auto-generated method stub
     super.onCreate(savedInstanceState);
     
     setContentView(R.layout.main);
     
     menuView = View.inflate(this, R.layout.gridview_menu, null);
     //   AlertDialog
     menuDialog = new AlertDialog.Builder(this).create();
     menuDialog.setView(menuView);
     menuDialog.setOnKeyListener(new OnKeyListener() {
     public boolean onKey(DialogInterface dialog, int keyCode,
      KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_MENU)//     
      dialog.dismiss();
     return false;
     }
     });
    
     menuGrid = (GridView) menuView.findViewById(R.id.gridview);
     menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));
     /**   menu   **/
     menuGrid.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
      long arg3) {
     switch (arg2) {
     case ITEM_SEARCH://   
    
      break;
     case ITEM_FILE_MANAGER://     
    
      break;
     case ITEM_DOWN_MANAGER://     
    
      break;
     case ITEM_FULLSCREEN://   
    
      break;
     case ITEM_MORE://   
      if (isMore) {
      menuGrid.setAdapter(getMenuAdapter(menu_name_array2,
      menu_image_array2));
      isMore = false;
      } else {//   
      menuGrid.setAdapter(getMenuAdapter(menu_name_array,
      menu_image_array));
      isMore = true;
      }
      menuGrid.invalidate();//   menu
      menuGrid.setSelection(ITEM_MORE);
      break;
     }
     
     
     }
     });
     }
    
    
    package com.wjq.menu;
    
    
    import java.util.ArrayList;
    import java.util.HashMap;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnKeyListener;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.GridView;
    import android.widget.SimpleAdapter;
    import android.widget.AdapterView.OnItemClickListener;
    
    public class CustomizeMenu extends Activity {
     
     private boolean isMore = false;// menu      
     AlertDialog menuDialog;// menu  Dialog
     GridView menuGrid;
     View menuView;
     
     private final int ITEM_SEARCH = 0;//   
     private final int ITEM_FILE_MANAGER = 1;//     
     private final int ITEM_DOWN_MANAGER = 2;//     
     private final int ITEM_FULLSCREEN = 3;//   
     private final int ITEM_MORE = 11;//   
    
     
     /**      **/
     int[] menu_image_array = { R.drawable.menu_search,
     R.drawable.menu_filemanager, R.drawable.menu_downmanager,
     R.drawable.menu_fullscreen, R.drawable.menu_inputurl,
     R.drawable.menu_bookmark, R.drawable.menu_bookmark_sync_import,
     R.drawable.menu_sharepage, R.drawable.menu_quit,
     R.drawable.menu_nightmode, R.drawable.menu_refresh,
     R.drawable.menu_more };
     /**      **/
     String[] menu_name_array = { "  ", "    ", "    ", "  ", "  ", "  ",
     "    ", "    ", "  ", "    ", "  ", "  " };
     /**     2 **/
     int[] menu_image_array2 = { R.drawable.menu_auto_landscape,
     R.drawable.menu_penselectmodel, R.drawable.menu_page_attr,
     R.drawable.menu_novel_mode, R.drawable.menu_page_updown,
     R.drawable.menu_checkupdate, R.drawable.menu_checknet,
     R.drawable.menu_refreshtimer, R.drawable.menu_syssettings,
     R.drawable.menu_help, R.drawable.menu_about, R.drawable.menu_return };
     /**     2 **/
     String[] menu_name_array2 = { "    ", "    ", "    ", "    ", "    ",
     "    ", "    ", "    ", "  ", "  ", "  ", "  " };
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     // TODO Auto-generated method stub
     super.onCreate(savedInstanceState);
     
     setContentView(R.layout.main);
     
     menuView = View.inflate(this, R.layout.gridview_menu, null);
     //   AlertDialog
     menuDialog = new AlertDialog.Builder(this).create();
     menuDialog.setView(menuView);
     menuDialog.setOnKeyListener(new OnKeyListener() {
     public boolean onKey(DialogInterface dialog, int keyCode,
      KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_MENU)//     
      dialog.dismiss();
     return false;
     }
     });
    
     menuGrid = (GridView) menuView.findViewById(R.id.gridview);
     menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));
     /**   menu   **/
     menuGrid.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
      long arg3) {
     switch (arg2) {
     case ITEM_SEARCH://   
    
      break;
     case ITEM_FILE_MANAGER://     
    
      break;
     case ITEM_DOWN_MANAGER://     
    
      break;
     case ITEM_FULLSCREEN://   
    
      break;
     case ITEM_MORE://   
      if (isMore) {
      menuGrid.setAdapter(getMenuAdapter(menu_name_array2,
      menu_image_array2));
      isMore = false;
      } else {//   
      menuGrid.setAdapter(getMenuAdapter(menu_name_array,
      menu_image_array));
      isMore = true;
      }
      menuGrid.invalidate();//   menu
      menuGrid.setSelection(ITEM_MORE);
      break;
     }
     
     
     }
     });
     }
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
     menu.add("menu");//       
     return super.onCreateOptionsMenu(menu);
     }
     
     private SimpleAdapter getMenuAdapter(String[] menuNameArray,
     int[] imageResourceArray) {
     ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
     for (int i = 0; i < menuNameArray.length; i++) {
     HashMap<String, Object> map = new HashMap<String, Object>();
     map.put("itemImage", imageResourceArray[i]);
     map.put("itemText", menuNameArray[i]);
     data.add(map);
     }
     SimpleAdapter simperAdapter = new SimpleAdapter(this, data,
     R.layout.item_menu, new String[] { "itemImage", "itemText" },
     new int[] { R.id.item_image, R.id.item_text });
     return simperAdapter;
     }
     @Override
     public boolean onMenuOpened(int featureId, Menu menu) {
     if (menuDialog == null) {
     menuDialog = new AlertDialog.Builder(this).setView(menuView).show();
     } else {
     menuDialog.show();
     }
     return false;//    true      menu
     }
     
    }
    
    효과 탐색:


    이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기