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

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

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

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

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

@Overridepublic 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);// ///////////////////////////////////////////////////////////////////// 这个是创建了一个滑动菜单的的listviewSwipeMenuCreator creator = new SwipeMenuCreator() {@Overridepublic void create(SwipeMenu menu) {ListViewMenuCreate(menu);}};// set creatorlistView.setMenuCreator(creator);// listview要添加menu}

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

// 值得注意的是 每一个listview的item创建的时候 SwipeMenu就创建了一次private void ListViewMenuCreate(SwipeMenu menu) {SwipeMenuItem kankanItem = new SwipeMenuItem(getActivity().getApplicationContext());// set item backgroundkankanItem.setBackground(new ColorDrawable(Color.rgb(0x33,0x66, 0xcc)));// 设置背景颜色// set item width// kankanItem.setWidth(dp2px(60));// 设置宽度kankanItem.setWidth(SyllabusMethod.dp2px(60, getResources()));// set item titlekankanItem.setTitle("添加");// 设置第一个标题// set item title fontsizekankanItem.setTitleSize(18);// 设置标题文字的大小// set item title font colorkankanItem.setTitleColor(Color.WHITE);// 设置标题颜色// add to menumenu.addMenuItem(kankanItem);// 添加标题到menu类中SwipeMenuItem showItem = new SwipeMenuItem(getActivity().getApplicationContext());// set item backgroundshowItem.setBackground(new ColorDrawable(Color.rgb(0xC9,0xC9, 0xCE)));// 设置背景颜色// set item width// showItem.setWidth(dp2px(60));// 设置宽度showItem.setWidth(SyllabusMethod.dp2px(60, getResources()));// set item titleshowItem.setTitle("删除");// 设置第一个标题// set item title fontsizeshowItem.setTitleSize(18);// 设置标题文字的大小// set item title font colorshowItem.setTitleColor(Color.WHITE);// 设置标题颜色// add to menumenu.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中添加我们需要跳转的方法即可。然后我们就实现了列表的左右滑动

理想的路总是为有信心的人预备着

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

相关文章:

你感兴趣的文章:

标签云: