Android實現自訂菜單、底部導航條(一)

來源:互聯網
上載者:User

            由於Android平台的分裂為不同的版本,OMS修改了,Android的功能表項目,為了儘可能適配機型。我們需要自己定義項目中的功能表項目。

 

     

 

           

package com.unimob;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.Gravity;import android.view.KeyEvent;import android.view.Menu;import android.view.View;import android.view.Window;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.GridView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class MainMenuView extends Activity{    AlertDialog menuDialog;// menu菜單Dialog    ListView listView;    GridView menuGrid, toolbarGrid;    View menuView;    private boolean isMore = false;// menu菜單翻頁控制    /*-- MENU菜單選項下標 --*/    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;// 菜單    /*-- Toolbar底部菜單選項下標--*/    private final int TOOLBAR_ITEM_PAGEHOME = 0;// 首頁    private final int TOOLBAR_ITEM_BACK = 1;// 退後    private final int TOOLBAR_ITEM_FORWARD = 2;// 前進    private final int TOOLBAR_ITEM_NEW = 3;// 建立    private final int TOOLBAR_ITEM_MENU = 4;// 菜單    /** 菜單圖片 **/    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 };    /** 菜單文字2 **/    String[] menu_name_array2 = {"自動橫屏", "筆選模式", "閱讀模式", "瀏覽模式", "快捷翻頁",        "檢查更新", "檢查網路", "定時重新整理", "設定", "協助", "關於" };    /** 底部菜單圖片 **/    int[] menu_toolbar_image_array = {R.drawable.controlbar_homepage,        R.drawable.controlbar_backward_enable,        R.drawable.controlbar_forward_enable, R.drawable.controlbar_window,        R.drawable.controlbar_showtype_list };    /** 底部菜單文字 **/    String[] menu_toolbar_name_array = {"首頁", "後退", "前進", "建立", "菜單" };    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        // 設定自訂menu菜單        menuView = View.inflate(this, R.layout.gridview_menu, null);        //menuView.set        // 建立AlertDialog        menuDialog = new AlertDialog.Builder(this).create();        Window w = menuDialog.getWindow();        w.setGravity(Gravity.BOTTOM);        //WindowManager.LayoutParams lp = w.getAttributes();        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;                }            }        });        // 建立底部菜單 Toolbar        toolbarGrid = (GridView) findViewById(R.id.GridView_toolbar);        toolbarGrid.setBackgroundResource(R.drawable.channelgallery_bg);// 設定背景        toolbarGrid.setNumColumns(5);// 設定每行列數        toolbarGrid.setGravity(Gravity.CENTER);// 位置置中        toolbarGrid.setVerticalSpacing(10);// 垂直間隔        toolbarGrid.setHorizontalSpacing(10);// 水平間隔        toolbarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array,            menu_toolbar_image_array));// 設定菜單Adapter        /** 監聽底部菜單選項 **/        toolbarGrid.setOnItemClickListener(new OnItemClickListener()        {            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,                long arg3)            {                Toast.makeText(MainMenuView.this,                    menu_toolbar_name_array[arg2], Toast.LENGTH_SHORT).show();                switch (arg2)                {                    case TOOLBAR_ITEM_PAGEHOME:                        break;                    case TOOLBAR_ITEM_BACK:                        break;                    case TOOLBAR_ITEM_FORWARD:                        break;                    case TOOLBAR_ITEM_NEW:                        break;                    case TOOLBAR_ITEM_MENU:                        menuDialog.show();                        break;                }            }        });        /** ListView列表 **/        listView = (ListView) findViewById(R.id.ListView_catalog);        listView            .setAdapter(getMenuAdapter(menu_name_array2, menu_image_array2));    }    @Override    /**     * 建立MENU     */    public boolean onCreateOptionsMenu(Menu menu)    {        menu.add("menu");// 必須建立一項        return super.onCreateOptionsMenu(menu);    }    @Override    /**     * 攔截MENU     */    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    }    /**     * 構造菜單Adapter     *      * @param menuNameArray 名稱     * @param imageResourceArray 圖片     * @return SimpleAdapter     */    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;    }}

gridview_menu.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"    ><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="bottom"         />  </LinearLayout>

item_menu.xml

 

<?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:layout_height="wrap_content" android:background="@drawable/icon"android:id="@+id/imageView1" android:layout_width="wrap_content"android:layout_centerHorizontal="true"></ImageView><ImageView android:id="@+id/item_image"android:layout_centerHorizontal="true" android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/menu_about"></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>

main.xml

 

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/RelativeLayout_catalog" android:layout_width="fill_parent"android:layout_height="wrap_content"><GridView android:id="@+id/GridView_toolbar"android:layout_height="wrap_content" android:layout_width="fill_parent"android:layout_alignParentBottom="true"></GridView><ListView android:id="@+id/ListView_catalog"android:layout_above="@id/GridView_toolbar" android:layout_width="fill_parent"android:layout_height="wrap_content"></ListView></RelativeLayout>

 

相關文章

聯繫我們

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