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 - 数据准备以及加载流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值