Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android Theme and Menu 主題菜單相關

Android Theme and Menu 主題菜單相關

編輯:關於android開發

Android Theme and Menu 主題菜單相關


 

學了一下Chris Banes大神的項目。總結一下theme相關的小知識點。先看個定義主題的不錯的小case:
在values目錄下建立兩個命名為themes的文件:

themes.xml




themes.xml(v21):


    //這裡體會一下 設置狀態欄透明,設置windowDrawsSystemBarBackgrounds true


分析

層次比較清晰。

根據平台分別兼容holo和design的Platform.Theme.AnDream和Platform.Theme.AnDream.Dark 子base主題:Base.Theme.AnDream和Base.Theme.AnDream.Dark 然後程序用的主題Theme.AnDream。以及繼承自Base.Theme.AnDream.Dark的Theme.AnDream.Images 最後一個是程序主題Theme.AnDream的一個擴展Theme.AnDream.Framed。

層次非常清晰,是個不錯的建主題的樣例,基本各種需要的主題就都有了。

主題的源頭是系統的Theme.AppCompat.Light.NoActionBar和Theme.AppCompat.NoActionBar。兼容包裡沒有ActionBar的淺色和深色主題,用這組主題方便我們後續自由的使用toolbar。

另外點進去看到appcompat源碼裡的:

demo裡意義比較模糊的屬性有:

overlays 是覆蓋物的意思。

true

and the actionmode will be shown over the action bar instead of pushing it down.It basically lets AppCompat know that you have a toolbar located in the top of the screen and that it should draw the ActionMode on top of it.
ActionMode顯示在頂欄,而不是屏幕中的菜單。告訴appcompat你有個toolbar在屏幕頂上,它應該把ActionMode畫到toolbar上面。

@null
定義contentoverlay的背景的,ContentOverlay背景為null 和actionbar下面的陰影有關

@color/primary_color_translucent
高亮字體顏色 @android:color/black
屏幕背景色 true
需要繪制系統操作欄背景 @android:color/transparent設置狀態欄透明

另外菜單的寫法例如:


android:icon
引用一個要用作項目圖標的 Drawable 類。 android:title
引用一個要用作項目標題的字符串。 android:showAsAction
指定此項應作為操作項目顯示在操作欄中的時間和方式。

toolbar右邊的三個點是 操作欄右側的操作溢出菜單,與手機物理菜單按鍵作用一樣
需要支持快速訪問的重要操作,可以在相應的 中添加 android:showAsAction=”ifRoom” ,從而將此項提升到操作欄中。

android:showAsAction總共有五個屬性。

never:永遠不會顯示。只會在溢出列表中顯示。 ifRoom:會顯示在Item中,但是如果已經有4個或者4個以上的Item時會隱藏在溢出列表中。 always:無論是否溢出,總會顯示。 withText:Title會顯示。 collapseActionView:可拓展的Item。

小拓展:

Android 2.3.x 及更低版本的系統,則當用戶首次打開選項菜單時,系統會調用 onCreateOptionsMenu() 來創建該菜單。如果您開發的應用是用於 Android 3.0 及更高版本的系統,則系統將在啟動 Activity 時調用 onCreateOptionsMenu(),以便向操作欄顯示項目。

在 Activity 生命周期中發生的事件修改選項菜單,則可通過 onPrepareOptionsMenu() 方法執行此操作。
在 Android 2.3.x 及更低版本中,每當用戶打開選項菜單時(按“菜單”按鈕),系統均會調用 onPrepareOptionsMenu()。
在 Android 3.0 及更高版本中,當菜單項顯示在操作欄中時,選項菜單被視為始終處於打開狀態。發生事件時,如果您要執行菜單更新,則必須調用 invalidateOptionsMenu() 來請求系統調用 onPrepareOptionsMenu()。

要想長按(或者選中復選框或視圖內的類似 UI 組件)顯示出來上下文操作模式,如網易新聞長按頂部出現的復制粘貼等。有的控件webview會默認實現。
為單個視圖啟用上下文操作模式
如果希望僅當用戶選擇特定視圖時才調用上下文操作模式,則應:
實現 ActionMode.Callback 接口。在其回調方法中,您既可以為上下文操作欄指定操作,又可以響應操作項目的點擊事件,還可以處理操作模式的其他生命周期事件。
當需要顯示操作欄時(例如,用戶長按視圖),請調用 startActionMode()。

private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {


    // Called when the action mode is created; startActionMode() was called
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        // Inflate a menu resource providing context menu items
        MenuInflater inflater = mode.getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
        return true;
    }


    // Called each time the action mode is shown. Always called after onCreateActionMode, but
    // may be called multiple times if the mode is invalidated.
    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false; // Return false if nothing is done
    }


    // Called when the user selects a contextual menu item
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_share:
                shareCurrentItem();
                mode.finish(); // Action picked, so close the CAB
                return true;
            default:
                return false;
        }
    }


    // Called when the user exits the action mode
    @Override
    public void onDestroyActionMode(ActionMode mode) {
        mActionMode = null;
    }
};

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved