需求:

1.左滑删除

2.向左滑动距离超过一半的时候让它自动滑开,向右滑动超过一半的时候自动隐藏

3.一次只允许滑开一个item

还有,根本不需要自定义view来实现,谨防入坑

布局:

<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:scrollbars="none"> <LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"> <LinearLayout
android:id="@+id/browse_record_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"> <ImageView
android:id="@+id/browse_record_image"
android:layout_width="128dp"
android:layout_height="78dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:scaleType="centerCrop"
android:src="@drawable/banner_zhibo" /> <TextView
android:id="@+id/browse_record_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="15dp"
android:layout_marginTop="10dp"
android:layout_toRightOf="@id/browse_record_image"
android:ellipsize="end"
android:includeFontPadding="false"
android:lineSpacingExtra="0dp"
android:lines="2"
android:text="空中读书会"
android:textColor="@color/c32"
android:textSize="15sp" />
</LinearLayout> <TextView
android:id="@+id/browse_delete"
android:layout_width="65dp"
android:layout_height="match_parent"
android:background="@color/red"
android:gravity="center"
android:text="删除"
android:textColor="@color/white"
android:textSize="16sp" /> </LinearLayout> </HorizontalScrollView>

adapter的getview中:

//隐藏删除按钮
ViewGroup.LayoutParams params = holder.browse_record_layout.getLayoutParams();
int screenW = ((Activity) context).getWindowManager().getDefaultDisplay().getWidth();
params.width = screenW; //自动滑开和自动隐藏效果
holder.scrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
// 手抬起的时候判断滑动距离
int slideDistance = holder.scrollView.getScrollX();// 获取向左滑动的距离,是一个非负数,px
int delete = holder.browse_delete.getWidth();// 删除按钮的宽度,单位px
// 当滑动距离大于删除按钮宽度的一半时,就自动滑动到最左边,完全显示删除按钮,所谓的最左边就是滑动距离等于删除按钮宽度
// 当滑动距离小于删除按钮宽度的一半时,就隐藏删除按钮,即滑动距离等于0的位置
if (slideDistance >= delete / 2) {
holder.scrollView.scrollTo(delete, 0);
currentSlideView = holder.scrollView;// 保存当前滑开的item
} else {
holder.scrollView.scrollTo(0, 0);
currentSlideView = null;// 清空
}
break;
case MotionEvent.ACTION_MOVE:
// 滑动的时候判断当前有没有其它滑开的item,有的话就隐藏
if (currentSlideView != holder.scrollView) {
autoHide();
}
break;
default:
break;
} return true;
}
}); //删除
holder.browse_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//删除一条记录
list.remove(position);
autoHide();
notifyDataSetChanged();
}
});

模仿QQ左滑删除的更多相关文章

  1. Android开发学习之路-PopupWindow和仿QQ左滑删除

    这周作业,要做一个类似QQ的左滑删除效果的ListView,因为不想给每个item都放一个按钮,所以决定用PopupWindow,这里记录一下 先放一下效果图: 先说明一下这里面的问题: ①没有做到像 ...

  2. Vue 仿QQ左滑删除功能(非原创)

    非原创,摘选来源:http://www.jb51.net/article/136221.htm. 废话不多说,相当实用,先记录. Html代码: <div class="contain ...

  3. 仿QQ列表左滑删除

    一直想写个仿QQ通讯列表左滑删除的效果,今天终于忙里偷闲,简单一个. 大概思路是这样的: 通过 ontouchstartontouchmoveontouchend 结合css3的平移. 不多说,直接上 ...

  4. 类似QQ消息左滑删除的Demo

    最近在网上学到一篇类似QQ消息左滑删除的demo,完善了下代码,感觉还不错,特此分享一波: CustomSwipeListView.java 是个继承自ListView的类,里面调用了自定义View ...

  5. [转]ANDROID仿IOS微信滑动删除_SWIPELISTVIEW左滑删除例子

    转载:http://dwtedx.sinaapp.com/itshare_290.html 本例子实现了滑动删除ListView的Itemdemo的效果.大家都知道.这种创意是来源于IOS的.左滑删除 ...

  6. 微信小程序独家秘笈之左滑删除

    代码地址如下:http://www.demodashi.com/demo/14056.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  7. tableView左滑删除功能

    实现三个代理方法即可 -(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtI ...

  8. wex5 实战 苹果左滑删除与长按编辑

    用了多年苹果,习惯了苹果的左滑删除与长按编辑,特别是短信什么的,很多安卓界面也采用了类似方式. 我的想法突如其来,用wex5也设计一个这样的功能,可以吗? 那句广告词,没有什么不可能. 呵呵. 一   ...

  9. 基于touch.js 左滑删除功能

    左滑删除功能 完整代码如下: (touch.js) <!DOCTYPE html> <html> <head> <meta charset="UTF ...

随机推荐

  1. Mybatis中的in查询和foreach标签

    Mybatis中的foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separato ...

  2. 14. javacript高级程序设计-表单

    1. 表单脚本 1.1 基础知识 <from>元素表示表单: l acceptCharset:服务器能处理的字符集 l action:接受请求的URL l elements:表单中所有控件 ...

  3. Metro各种流转换

    Ibuffer转byte[] ,(int)buffer.Length); Byte[]转Ibuffer WindowsRuntimeBufferExtensions.AsBuffer(bytes,,b ...

  4. 前端js模版 预编译工具Tmod js使用入门

    1. 安装node js , 2. 用 npm install -g tmodjs  命令安装tmod 3.了解参数配置 4.运行测试例子->命令窗切换到当前文档位置 --->执行tomd ...

  5. html 中绑定事件 this的指向

    var m=function(){ alert(2);    }    var obj={        A:function(){        },        m:function(){    ...

  6. 【OpenCV】内存溢出

    今天在写读大量图片时,发现在读到第721张时,内存溢出了,无法继续读.出错语句为pframe2 = cvLoadImage(pname2); 后来加上了ReleaseImage(&pname2 ...

  7. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  8. css设置网页文本选中样式

    网页的默认的文本选中颜色是蓝底白字(大多应该是吧),这个样子: 感觉并不是特别好看,可以通过CSS3的一个特性,一个CSS3的伪类选择器::selection来设置文本被选中时的状态,比如本博客的主题 ...

  9. Smarty模板技术学习(二)

    本文主要包括以下内容 公共文件引入与继承 内容捕捉 变量调剂器 缓存 Smarty过滤器 数据对象.注册对象 与已有项目结合 公共文件引入与继承 可以把许多模板页面都用到的公共页面放到单独文件里边,通 ...

  10. case/casez/casex 的区分与使用

    参考:http://www.cnblogs.com/poiu-elab/archive/2012/11/02/2751323.html 与  verilog数字系统设计基础 一般来说,使用最多的是CA ...