android-swipelistview 导入和d使用

本文详细介绍了如何在Android项目中集成并使用Swipelistview,包括导入源码、配置XML文件和实现回调方法等关键步骤。通过实例演示,帮助开发者快速上手这一强大组件,提升列表操作的交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个开源项目,实现android的listview的item左右滑动的功能,github地址https://github.com/47deg/android-swipelistview

官方推荐用Maven来集成,对于我这种小白来说,太麻烦了,所以直接将源码复制到项目里面比较方便点,

集成的方法参照http://blog.youkuaiyun.com/fireworkburn/article/details/14168549

关键步骤贴出来:

1. 将android-swipelistview-master文件夹下的swipelistview-samples工程导入eclipse中,并且新建一个包com.fortysevendeg.android.swipelistview.listview,具体可参考上面网址中的步骤;

2.将swipelistview文件夹中的src目录下的4个java文件(swipelistview\src\com\fortysevendeg\swipelistview)拷贝到swipelistview-samples工程中;

3.将swipelistview文件夹中res\values目录下的swipelistview__attrs.xml文件拷贝到工程的values目录下;

4.导入nineoldandroids-2.4.0.jar和android-support-v4.jar包;

5.clean工程,导入相关类、修复包名,没有错误,运行程序,又有新的错误,原因是引用SwipeListView的路径不对;


集成好了以后就可以开始使用了,swipelistview继承自listview,所以使用起来跟listview没有什么大区别,在使用了swipelistview的xml文件中,加入xmlns:swipe="http://schemas.android.com/apk/res-auto",然后定义listview显示在前面的layout的id和显示在后面的layout的id,如

            swipe:swipeBackView="@+id/back"
            swipe:swipeFrontView="@+id/front"

然后记得要在listview item的布局中定义这两个id,否则滑动的时候会奔溃,还有一系列其他参数可以配置,参见swipelistview__attrs.xml文件。


然后在代码中,如果要可以为swipelistview设置一些回调方法,使用BaseSwipeListViewListener,如:

mList.setSwipeListViewListener(new BaseSwipeListViewListener() {
			@Override
			public void onClickFrontView(int position) {
				super.onClickFrontView(position);	
			}
		});

设置了显示在前面的view的点击事件(如果直接使用setOnItemClickListener好像会与LongClick冲突,短按变长按),如果还需要长按的事件,先在xml中加入swipe:swipeOpenOnLongPress="false",然后直接setOnItemLongClickListener就可以了,还有很多回调方法,参照BaseSwipeListViewListener里的方法就懂了。、


源码关键的代码在SwipeListViewTouchListener的onTouch方法里,其中case MotionEvent.ACTION_MOVE:里面最后一行move(deltaX);在if (opened.get(downPosition))这个判断之前修改deltaX的值可以实现阻尼的效果如

if (swiping && downPosition != ListView.INVALID_POSITION) {
				deltaX = deltaX / 2.5f;//这里设置阻尼
				if (opened.get(downPosition)) {
					deltaX += openedRight.get(downPosition) ? viewWidth - rightOffset : -viewWidth + leftOffset;
				}
				move(deltaX);
				return true;
			}


注意不要修改了deltaX原本的值,但是ACTION_UP后的动画效果是跟前面手指滑动的速率有关的,如果不修改,松开后动画稍有不对劲,不仔细看看不出,偷个懒,暂时不改了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值