博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用swipemenulistview实现列表的左右滑动
阅读量:5991 次
发布时间:2019-06-20

本文共 5468 字,大约阅读时间需要 18 分钟。

  今天从网上找到一个第三方控件swipemenulistview,封装好的一个控件,可以实现列表的左右滑动,模仿qq的列表效果

下载地址为:

我们下载好之后,将这个项目导入到我们的工程当中去,

我个人感觉比较重要的是SwipeMenuLayout这个类,在这个类当中重写了好多方法,才能实现我们列表选项的左右滑动。

 

@Override    public void computeScroll() {        if (state == STATE_OPEN) {            if (mOpenScroller.computeScrollOffset()) {
// 要是没有滚动完 就启动滚动的动画 swipe(mOpenScroller.getCurrX()); postInvalidate();// //必须调用该方法,否则不一定能看到滚动效果 } } else { if (mCloseScroller.computeScrollOffset()) { swipe(mBaseX - mCloseScroller.getCurrX()); postInvalidate(); } } } public void smoothCloseMenu() { state = STATE_CLOSE;// mBaseX = -mContentView.getLeft();// mCloseScroller.startScroll(0, 0, mBaseX, 0, 350);// 滚动的final位置 postInvalidate(); } // // 创建open动画 public void smoothOpenMenu() { state = STATE_OPEN; mOpenScroller.startScroll(-mContentView.getLeft(), 0, mMenuView.getWidth(), 0, 350); postInvalidate(); } // 创建close动画 public void closeMenu() { if (mCloseScroller.computeScrollOffset()) { mCloseScroller.abortAnimation(); } if (state == STATE_OPEN) { state = STATE_CLOSE; swipe(0); } } public void openMenu() { if (state == STATE_CLOSE) { state = STATE_OPEN; swipe(mMenuView.getWidth()); } }

 

  这只是部分比较重要的代码,在我们工程中,我们如何去调用它

private void InitcehuaListView(View view) {
// 初始化 listView = (SwipeMenuListView) view.findViewById(R.id.listView); // /// // 这个是创建了一个滑动菜单的的listview SwipeMenuCreator creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { ListViewMenuCreate(menu); } }; // set creator listView.setMenuCreator(creator);// listview要添加menu}

  我们在创建的时候跳转到我们的ListViewMenuCreate这个方法  

// 值得注意的是 每一个listview的item创建的时候 SwipeMenu就创建了一次    private void ListViewMenuCreate(SwipeMenu menu) {                            SwipeMenuItem kankanItem = new SwipeMenuItem(getActivity()                            .getApplicationContext());                    // set item background                    kankanItem.setBackground(new ColorDrawable(Color.rgb(0x33,                            0x66, 0xcc)));// 设置背景颜色                    // set item width                    // kankanItem.setWidth(dp2px(60));// 设置宽度                    kankanItem.setWidth(SyllabusMethod                            .dp2px(60, getResources()));                    // set item title                    kankanItem.setTitle("添加");// 设置第一个标题                    // set item title fontsize                    kankanItem.setTitleSize(18);// 设置标题文字的大小                    // set item title font color                    kankanItem.setTitleColor(Color.WHITE);// 设置标题颜色                    // add to menu                    menu.addMenuItem(kankanItem);// 添加标题到menu类中                    SwipeMenuItem showItem = new SwipeMenuItem(getActivity()                            .getApplicationContext());                    // set item background                    showItem.setBackground(new ColorDrawable(Color.rgb(0xC9,                            0xC9, 0xCE)));// 设置背景颜色                    // set item width                    // showItem.setWidth(dp2px(60));// 设置宽度                    showItem.setWidth(SyllabusMethod.dp2px(60, getResources()));                    // set item title                    showItem.setTitle("删除");// 设置第一个标题                    // set item title fontsize                    showItem.setTitleSize(18);// 设置标题文字的大小                    // set item title font color                    showItem.setTitleColor(Color.WHITE);// 设置标题颜色                    // add to menu                    menu.addMenuItem(showItem);// 添加标题到menu类中                    }

  我们将item加入到我们的menu中来,然后我们再去设置我们item的点击事件

listView.setOnMenuItemClickListener(new OnMenuItemClickListener() {            public void onMenuItemClick(int position, SwipeMenu menu, int index) {                ListmenuTimes = -1;                String value = menu.getMenuItem(index).getTitle().toString();                if (value.equals("添加")) {                    appliction.setCurrentchickpos(position + 1);                    Intent addkchengintent = new Intent(getActivity(),                            AddsyllabusActivity.class);                    startActivityForResult(addkchengintent,                            CommonCS.INTENT_GOTO_ADDSYLLABUS_CODE);                } else if (value.equals("删除")) {                    boolean flag = SomeSqliteMethod.deleteCurrentItem(                            getActivity(), appliction.getCurrentdate(),                            (position + 1));                    if (flag) {                        Toast.makeText(getActivity().getApplicationContext(),                                "删除成功", Toast.LENGTH_SHORT).show();                        if (!Todaysyllabuslist.isEmpty()) {                            Todaysyllabuslist.clear();                        }                        int currentdate = appliction.getCurrentdate();                        InitMYTodayListData(currentdate);                        showlist();                    }                }

  我们在相应的value中添加我们需要跳转的方法即可。然后我们就实现了列表的左右滑动

 

 

作者:
出处:
 
本文版权归和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

转载于:https://www.cnblogs.com/jerehedu/p/4440602.html

你可能感兴趣的文章
除了汽车,自动驾驶场景的实现还能依靠机器人
查看>>
随笔 - 141 文章 - 0 评论 - 214 Something about TFS
查看>>
二次三项式的因式分解
查看>>
linux下俄罗斯方块(修改版,可以玩)
查看>>
树莓派时间不正确问题修复
查看>>
超级队长VR线下体验店落地上海,让娱乐突破想象
查看>>
Python中SQL——LIKE中的%
查看>>
机器学习稀疏矩阵简介(附Python代码)
查看>>
基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
查看>>
mysql基础(二) 常用SQL语句
查看>>
16、OSPF配置实验之LSDB过载保护
查看>>
sublime text学习
查看>>
LeakCanary——直白的展现Android中的内存泄露
查看>>
Win7笔记本电脑启用虚拟WIFI共享上网
查看>>
存储过程的设计规则
查看>>
从手淘搜索到优酷短视频,阿里巴巴是如何在搜索推荐领域下应用深度学习的?...
查看>>
Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读
查看>>
乾坤合一~Linux设备驱动之USB主机和设备驱动
查看>>
apache+tomcat整合
查看>>
solaris ssh乱码
查看>>