Android 7.0 Gallery圖庫源碼分析7 - ActionBar下拉導航及根據標籤進行分類

轉載請註明出處: http://blog.csdn.net/lb377463323/article/details/70308541

ActionBar實現下拉導航

Gallery中使用下拉導航顯示可分類的標籤,默認分爲相冊、地點、時間、人物和標籤等,實現此下拉導航只需要實現如下代碼:

    //AbstractGalleryActivity類
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        //這裏是對每個頁面創建菜單欄
        return getStateManager().createOptionsMenu(menu);
    }

    //StateManager類
    public boolean createOptionsMenu(Menu menu) {
        ......
        return getTopState().onCreateActionBar(menu);
    }

    //AlbumSetPage類
    protected boolean onCreateActionBar(Menu menu) {
        //這裏就是顯示分類菜單的下拉導航,mActionBar即爲GalleryActionBar
        mActionBar.enableClusterMenu(mSelectedAction, this);
    }
    //這個方法就是下拉導航的具體實現
    public void enableClusterMenu(int action, ClusterRunner runner) {
        mActionBar.setListNavigationCallbacks(SpinnerAdapter adapter,
            OnNavigationListener callback);
        mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        //選中指定位置的導航項,也就是默認顯示哪一個導航項
        setSelectedAction(action);
        mClusterRunner = runner;
    }

adapter在Gallery用的是ClusterAdapter,也就是控制下拉導航顯示的內容,自己看下代碼很容易理解。對於Adapter的話,寫過ListView的一個很熟悉,這裏不多講了。

OnNavigationListener是一個接口,需要實現onNavigationItemSelected方法,這個方法用來處理下拉導航的點擊事件。下面開始細講這個方法。

根據標籤進行分類

Gallery點擊下拉導航一共有相冊、地點、時間、任務和標籤,下面就只分析根據任務進行分類。

在onNavigationItemSelected方法中通過doCluster進行分類

mClusterRunner.doCluster(sClusterItems[itemPosition].action);

AlbumSetPage實現了ClusterRunner接口,所以mClusterRunner實際上就是AlbumSetPage。下面看下doCluster方法,這是執行分類的實現。

data.putString(AlbumSetPage.KEY_MEDIA_PATH, newPath);
data.putInt(KEY_SELECTED_CLUSTER_TYPE, clusterType);
//通過StateManager切換頁面
mActivity.getStateManager().switchState(this, AlbumSetPage.class, data);

切換頁面是從AlbumSetPage切換到AlbumSetPage,只不過裏面的數據變了而已。data封裝了兩條數據,AlbumSetPage.KEY_MEDIA_PATH是”/cluster/{/combo/{/local/all,picasa/all}}/face”,KEY_SELECTED_CLUSTER_TYPE是32

之後的過程跟分析3一樣,只不過路徑和數據源變一下。http://blog.csdn.net/lb377463323/article/details/69569133“>Android 7.0 Gallery源碼分析3 - 數據準備以及加載流程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章