转载

使用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中添加我们需要跳转的方法即可。然后我们就实现了列表的左右滑动

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

正文到此结束
Loading...