android-ActionMode使用

这几天一直接触ActionMode 的知识,这里就把自己接触到的知识点顺手记下来,以后肯定会用的找的

1.ActionMode的创建

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

        @Override
        public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
            final ArrayList<GridItem> selectItem = mAdapter.mSelectItem;
            if (arg1.getItemId() == R.id.menu_delete) {
                new AlertDialog.Builder(mContext)
                    .setTitle(mContext.getString(R.string.delete))
                    .setIcon(null)
                    .setMessage(mContext.getResources()
                            .getQuantityString(R.plurals.delete_selection, mAdapter.mSelectItem.size()))
                    .setPositiveButton(mContext.getString(R.string.ok), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            DeleteImage da = new DeleteImage(selectItem);
                            da.execute();
                        }
                    })
                    .setNegativeButton(mContext.getString(R.string.cancel), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                        }
                    }).show();
            } else if (arg1.getItemId() == R.id.menu_share) {
                Intent intent = computeSharingIntent();
                getActivity().startActivity(Intent.createChooser(intent, getString(R.string.share)));
            } else if (arg1.getItemId() == R.id.menu_select) {
                if (selectItem.size() == mGirdList.size()) {
                    clearGridList();
                } else {
                    selectAllGridList();
                }
                updateSelectNumber();
                mAdapter.notifyDataSetChanged();
            }
            return false;
        }

        @Override
        public boolean onCreateActionMode(ActionMode arg0, Menu arg1) {
            LayoutInflater layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);//添加普通的布局文件,大多是显示在顶上的----
            View customView = layoutInflater.inflate(R.layout.funui_action_mode, null);//----->注意是LayoutInflater             arg0.setCustomView(customView);
            mSelect = (TextView) customView.findViewById(R.id.select);

            MenuInflater inflater = arg0.getMenuInflater();//注意跟上面的区别,这个是用来添加menu的             inflater.inflate(R.menu.image_menu, arg1); //这里还可以用来设置里面的元素的状态,使用的方法是mSelectItem = menu.findItem(R.id.select_all);            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode arg0) {
            setSelectMode(false);
            mAdapter.notifyDataSetChanged();
        }

        @Override
        public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
            return false;
        }
    };

解释

1.onActionItemClicked(),这个方法主要是用来定义ActionMode 中menu项点击事件的处理,MenuItem就是里面的元素,就像LinearLayout中的Button一样

2.onCreateActionMode(),这个方法主要是用来定义ActionMode中menu的显示,加载menu布局,如果想要隐藏其中的个别元素,也是在这里面处理的

自己想要添加一个全选功能,添加的代码如下

 private void cancelSelect() {    266
            for (Album album : mAlbumlist) {
            album.isSelected = false;
            }
            mAdapter.mSelectAlbum.clear();
            }    

            private void selectAll() {
            mAdapter.mSelectAlbum.clear();
            for (Album album : mAlbumlist) {
            album.isSelected = true;
            mAdapter.mSelectAlbum.add(album);
            }
            }

其实这个就是找到里面存储选中的listview,对这个listview进行操作就行了

时间: 2024-10-21 18:43:15

android-ActionMode使用的相关文章

android Actionmode 样式自定义

<style name="Base.Theme.DesignDemo" parent="Theme.AppCompat.Light.NoActionBar"> <item name="windowActionModeOverlay">true</item> <item name="actionModeStyle">@style/ActionModeStyle</item&g

Android ActionMode模式使用

ActionMode模式 ActionMode模式为在页面产生一个悬浮的类似于ActionBar的控件,悬浮在ActionBar之上.使用它的好处在于,不需要在页面上再增加操作控件,充分利用页面空间. ActionMode启动方式 此方法在Activity类中实现,继承自Activity类可以使用. // API11加入(默认模式TYPE_PRIMARY) public ActionMode startActionMode(ActionMode.Callback callback); // AP

Android — 长按ListView 利用上下文菜单(ActionMode) 进行批量事件处理

好久没写博客拉``````` 近期最终略微闲一点了``````` 无聊拿手机清理短信.发现批量事件的处理还是挺管用的`````` 那么自己也来山寨一记看看效果吧````` 闲话少说,首先,我们来看下手机自带的短信功能里运行批量删除时的效果: 然后  是我们自己简单山寨的效果:       模拟的操作过程非常easy,但也非常有代表性. 我们假定我们所处的场景为.进入一个存放联系人列表的界面. 于是,首先我们定义了一个进度框,模拟提示正在从网络上下载数据. 接着.当网络数据成功下载到移动设备上后,

(转)Android新的menu实现——ActionMode

Android的menu有多种实现方式,以前写过一篇Android中五种常用的menu(菜单),这里介绍一种新的menu实现方式:ActionMode.ActionMode是Android 3.0以后出现的,我们可以使用AppCompat库使ActionMode兼容至Android 2.1. Android 3.0以前,我们处理列表的长按事件经常使用Context Menu,Android3.0以后,我们有了新的选择:ActionMode.下图左边效果为Context Menu右边效果为Acti

Android界面编程——导航栏及菜单(六)

Android界面编程--导航栏及菜单 2.7导航栏及菜单 2.7.1  ActionBar ActionBar是Android3.0(API 11)开始增加的新特性,ActionBar出现在活动窗口的顶部,可以显示标题.icon.Actions按钮.可交互View,可实现应用程序级的导航,如图2.7-1所示 图2.7-1 其中 1. App icon: 主要用于展示App的Logo,如果当前界面不是一级界面,还可以展示返回航. 2.View Control: 用于切换不同的视图或者展示非交互信

【转】推荐--《Android深入浅出》----不错

原文网址:http://www.cnblogs.com/plokmju/p/Android_Book.html 承香墨影 推荐--<Android深入浅出> 基本信息 书名:Android深入浅出 作者:张旸 著 页数: 661 出版社: 机械工业出版社; 第1版 (2014年4月17日) 语种: 简体中文 ASIN: B00JR3P8X0 品牌: 北京华章图文信息有限公司 推荐理由 以前一直在博客园发表Android相关的技术博客,经过一年多的精心准备,<Android深入浅出>

android菜单简易笔记

API Guides ----UI------Menus Menu是一个通用UI组件,提供类似用户使用助手 3.0(API 11)安卓不再提供一个专用的菜单按钮,安卓APP应用当中最多可以出现6个菜单,如果要提供更多选项,在下发会出现一个more,点击后出现其他选项.使用菜单键有3种方式 options menu 收集菜单选项提供给APP ,可以放置一些全局按钮,比如,搜索,设置, Compose; 在android 2.3 以下是存在真实按钮的:使用3.0或者更高版本会提供 actionbar

Android学习笔记——Menu(二)

知识点: 这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu). 上下文菜单 上下文菜单提供对UI界面上的特定项或上下文框架的操作,就如同Windows中右键菜单一样. 在Android中,有两种提供上下文操作的方式:一种是在浮动的上下文菜单(长按弹出)中,另一种是上下文操作模式里. 那么怎样创建一个浮动的上下文菜单(floating context menu)呢? 1.调用registerForContextMenu()方法为V

低版本系统兼容的ActionBar(二)ActionProvider+分离式ActionBar+分离式的ActionMode

       这篇文章主要讲的是在低版本兼容的ActionBar中实现自定义的ActionProvider,ShareActionProvider的使用方法,如何实现分离式ActionBar,外加在分离式ActionBar上的ActionMode的效果. 一.自定义ActionProvider 建立一个类,继承android.support.v4.view.ActionProvider,然后复写里面的方法即可.主要就是初始化视图和相应点击事件. 范例一: SettingsActionProvid

Android使用WebView开发常见的坑

原文链接:http://mp.weixin.qq.com/s?__biz=MzAwODE1NTI2MQ==&tempkey=uP3a%2BOgIN7vPbLfJp3BTCl2KabYi1%2FfBUQEkkQD7ixoNgGn4JfrR81AwdwsBof%2FhsiCe4%2B9o0KJQ6lv%2B32pSyH46EQAIwJ5i%2BxxED%2BjrIpwHyFCFbDUibPnNlrZDxQAc4JV34qtCRBPLX6fF3qjtjQ%3D%3D&chksm=1b727810