使用swipemenulistview实现列表的左右滑动

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

使用swipemenulistview实现列表的左右滑动

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

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

使用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/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 

你可能感兴趣的:(ListView)