(轉)Android新的menu實現——ActionMode

Android的menu有多種實現方式,之前寫過一篇Android中五種經常使用的menu(菜單),這裏介紹一種新的menu實現方式:ActionMode。ActionMode是Android 3.0之後出現的,咱們能夠使用AppCompat庫使ActionMode兼容至Android 2.1。html

    Android 3.0之前,咱們處理列表的長按事件常用Context Menu,Android3.0之後,咱們有了新的選擇:ActionMode。下圖左邊效果爲Context Menu右邊效果爲ActionMode。android

 


 

    Android開發者應該都熟悉Context Menu了,Context Menu是懸浮在操做項之上的視圖。ActionMode是臨時佔據了ActionBar的位置。下面給出ActionMode的實現方法。ide

    使用ActionMode須要兩步驟:ui

    一、實現ActionMode.Callback接口,並處理ActionMode的生命週期,ActionMode的生命週期以下圖:spa


    private ActionMode.Callback mCallback = new ActionMode.Callback() {  
      
            @Override  
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {  
                return false;  
            }  
      
            @Override  
            public void onDestroyActionMode(ActionMode mode) {  
                // TODO Auto-generated method stub  
            }  
      
            @Override  
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {  
                MenuInflater inflater = mode.getMenuInflater();  
                inflater.inflate(R.menu.actionmode, menu);  
                  
                return true;  
            }  
      
            @Override  
            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {  
                boolean ret = false;  
                if (item.getItemId() == R.id.actionmode_cancel) {  
                    mode.finish();  
                    ret = true;  
                }  
                return ret;  
            }  
        };  

 

 

 

       二、事件觸發時,調用startActionMode()方法。.net

    someView.setOnLongClickListener(new View.OnLongClickListener() {  
        // Called when the user long-clicks on someView  
        public boolean onLongClick(View view) {  
            if (mActionMode != null) {  
                return false;  
            }  
         
            // Start the CAB using the ActionMode.Callback defined above  
            mActionMode = getActivity().startActionMode(mActionModeCallback);  
            view.setSelected(true);  
            return true;  
        }  
    });  

 

 

 

 

 

/**
* @author 張興業
*  iOS入門羣:83702688
*  android開發進階羣:241395671
*  個人新浪微博:@張興業TBOW
*/

 

參考:code

http://developer.android.com/reference/android/view/ActionMode.Callback.html
htm

http://developer.android.com/guide/topics/ui/menus.htmlblog

相關文章
相關標籤/搜索