SlideAndDragListView_一个可以左右滑动item和拖放item的ListView。
来源:互联网 发布:程序员加班傻 编辑:程序博客网 时间:2024/05/02 01:36
SlideAndDragListView
一个可以左右滑动item和拖放item的ListView。
Demo: 下载
简介
SlideAndDragListView (SDLV) 继承与ListView,SDLV可以向左或者向右滑动Item,并且可以拖放item达到排序的目的。
一些特点:
- 清晰的拖放操作。
- 在拖放的时候的直观和平滑滚动。
- 支持item的单击和长单击事件。
- 丰富的回调接口。
- 滑动item的方向可以是向左、向右或者两者。
- 等等......
SlideAndDragListView 用于各种优先级列表:收藏夹,播放列表,清单等。我希望你觉得它有请,同时,如果发现bug或者不人性化的地方,或者有什么建议,请麻烦告诉我或者帮助我!
引用
Gradle
compile 'com.yydcdut.sdlv:sdlv:0.3.2@aar'
aar
下载
Jar
下载
控件的使用
菜单的单击事件和item的滑动方向
步骤1
- 在layout的xml文件中添加SlideAndDragListView
<com.yydcdut.sdlv.SlideAndDragListView android:layout_width="fill_parent" android:layout_height="fill_parent"></com.yydcdut.sdlv.SlideAndDragListView>
步骤2
- 创建
Menu
并添加MenuItem
Menu menu = new Menu((int) getResources().getDimension(R.dimen.slv_item_height), new ColorDrawable(Color.WHITE), true);//第三个参数表示滑动item是否能滑的过量(true表示过量,就像Gif中显示的那样;false表示不过量,就像QQ中的那样)menu.addItem(new MenuItem.Builder().setWidth(90)//单个菜单button的宽度 .setBackground(new ColorDrawable(Color.RED))//设置菜单的背景 .setText("One")//set text string .setTextColor(Color.GRAY)//set text color .setTextSize(20)//set text color .build());menu.addItem(new MenuItem.Builder().setWidth(120) .setBackground(new ColorDrawable(Color.BLACK)) .setDirection(MenuItem.DIRECTION_RIGHT)//设置方向 (默认方向为DIRECTION_LEFT) .setIcon(getResources().getDrawable(R.drawable.ic_launcher))// set icon .build());//set in sdlvlistView.setMenu(menu);
类 Menu
的构造函数中的第三个参数表示滑动item是否能滑的过量(true表示过量,就像Gif中显示的那样;false表示不过量。
�如果是true
:
如果是 false
:
步骤3
- 实现 menu item的单击事件
slideAndDragListView.setOnSlideListener(new SlideAndDragListView.OnSlideListener() { @Override public void onSlideOpen(View view, View parentView, int position, int direction) { } @Override public void onSlideClose(View view, View parentView, int position, int direction) { } });slideAndDragListView.setOnMenuItemClickListener(new SlideAndDragListView.OnMenuItemClickListener() { @Override public int onMenuItemClick(View v, int itemPosition, int buttonPosition, int direction) { switch (direction) { case MenuItem.DIRECTION_LEFT: switch (buttonPosition) { case 0://One return Menu.ITEM_SCROLL_BACK; } break; case MenuItem.DIRECTION_RIGHT: switch (buttonPosition) { case 0://icon return Menu.ITEM_DELETE_FROM_BOTTOM_TO_TOP; } break; default : return Menu.ITEM_NOTHING; } } });
注意:必须得设置OnSlideListener监听器。
Menu.ITEM_NOTHING`:
Menu.ITEM_SCROLL_BACK
:
Menu.ITEM_DELETE_FROM_BOTTOM_TO_TOP
:
拖放
slideAndDragListView.setOnDragListener(new SlideAndDragListView.OnDragListener() { @Override public void onDragViewStart(int position) { } @Override public void onDragViewMoving(int position) { } @Override public void onDragViewDown(int position) { } }, mDataList);
public void onDragViewStart(int position)
.参数 position
表示的是刚开始拖动的时候取的item在ListView中的位置。
public void onDragViewMoving(int position)
.参数 position
表示的是当前拖动的item在ListView的位置,当处于拖动的时候这个函数是会一直回调的。
public void onDragViewDown(int position)
. 参数 position
i傲世的是拖动的item最放到了ListView的哪个位置。
其他
Item单击
slideAndDragListView.setOnListItemClickListener(new SlideAndDragListView.OnListItemClickListener() { @Override public void onListItemClick(View v, int position) { } });
Item长单击
slideAndDragListView.setOnListItemLongClickListener(new SlideAndDragListView.OnListItemLongClickListener() { @Override public void onListItemLongClick(View view, int position) { } });
Item滑动监听器
SlideAndDragListView.OnSlideListener() { @Override public void onSlideOpen(View view, View parentView, int position, int direction) { } @Override public void onSlideClose(View view, View parentView, int position, int direction) { } });
Item删除监听器
slideAndDragListView.setOnItemDeleteListener(new SlideAndDragListView.OnItemDeleteListener() { @Override public void onItemDelete(View view, int position) { } });
public void onItemDelete(View view, int position)
的调用是在 int onMenuItemClick(View v, int itemPosition, int buttonPosition, int direction)
返回Menu.ITEM_DELETE_FROM_BOTTOM_TO_TOP
之后.
权限
<uses-permission android:name="android.permission.VIBRATE"/>
- SlideAndDragListView_一个可以左右滑动item和拖放item的ListView。
- listview item 左右滑动
- ListView Item左右滑动
- ListView中item的左右滑动
- ListView中item的左右滑动
- 仿微信ListView item左右滑动
- listview左右滑动item效果
- listview滑动删除item的一个方案
- ListView中每个item的左右滑动响应,附源码
- ListView 实现带有Filpper效果的左右滑动删除 Item
- android 实现Listview左右滑动删除Item
- android listview item 左右滑动删除
- 利用RecyclerView实现的一个动画给变item的位置和左右滑动删除该RcyclervView的Item条目
- 仿QQ实现ListView中item的左右滑动同时实现ListView的上拉刷新和下拉加载更多
- 滑动删除ListView的Item
- listView 的item滑动删除
- Android ListView上下滑动与item左右滑动冲突解决
- listview上下滑动与item的viewpager左右滑动时的焦点切换问题
- C语言中整型溢出的危害
- coredump简介与coredump原因总结
- 堆
- OC-042.数组与字符串之间的转换
- php编译缓存
- SlideAndDragListView_一个可以左右滑动item和拖放item的ListView。
- 解决Android Studio 和 Android SDK Manager 无法在线更新的问题.
- 网页编辑里href标记 src标记 url标记三者的区别
- 网络访问过程中遇到的java.io.IOException: Target host must not be null的问题
- 微信后台技术相关介绍
- Dynamics CRM2016 站点地图Bug之KnowledgeArticle不显示
- arcgis js 笔记
- Java网络编程总结 --URLConnection
- Oracle创建表空间和用户