zoukankan      html  css  js  c++  java
  • 使用swipemenulistview实现列表的左右滑动

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

    下载地址为:https://github.com/baoyongzhang/SwipeMenuListView

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

    我个人感觉比较重要的是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中添加我们需要跳转的方法即可。然后我们就实现了列表的左右滑动

     

    作者:杰瑞教育
    出处:http://www.cnblogs.com/jerehedu/ 
    本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
     
  • 相关阅读:
    前端全链路优化总结
    到底使用字符数组还是字符串常量
    指针的误区
    指针
    函数使用初体验
    C语言函数使用小试牛
    十年研发经验工程师的嵌入式学习书籍大推荐与学习进阶路线
    TCP/IP协议前期的一知半解
    Ubuntu 16.04 LTS安装sogou输入法详解
    1/0信封——数据链路层,ARP及RARP
  • 原文地址:https://www.cnblogs.com/jerehedu/p/4440602.html
Copyright © 2011-2022 走看看