需求:

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. javascript 数组去重

    2015年5月15日 20:17:05 星期五 原理: .......(说不清楚, 自己看代码吧, 很简单.....) //去重 var hash_already_input = {}; for (v ...

  2. Mathematics:Find a multiple(POJ 2356)

    找组合 题目大意:给你N个自然数,请你求出若干个数的组合的和为N的整数倍的数 经典鸽巢原理题目,鸽巢原理的意思是,有N个物品,放在N-1个集合中,则一定存在一个集合有2个元素或以上. 这一题是说有找出 ...

  3. mybatis setting配置

    Mybatis配置报错元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHan ...

  4. jsonp注意事项

    自己测试的: <?php ');                     }                 }); } </script>     <!DOCTYPE htm ...

  5. Quatre 2D的绘图功能的三个步骤(上下文,绘图,渲染)

    一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: ( ...

  6. [Android Pro] Android性能优化典范第一季

    reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性 ...

  7. Rabbitmq实现负载均衡与消息持久化

      Rabbitmq 是对AMQP协议的一种实现.使用范围也比较广泛,主要用于消息异步通讯. 一,默认情况下Rabbitmq使用轮询(round-robin)方式转发消息.为了较好实现负载,可以在消息 ...

  8. Foreign key (referential) constraints on DB2 LUW v105

    oreign key constraints (also known as referential constraints or referential integrity constraints) ...

  9. 三、jQuery--Ajax基础--Ajax全接触--jQuery中的AJAX

    用jQuery实现Ajax jQuery.ajax([settings]) type:类型,“POST”或“GET”,默认为“GET” url:发送请求的地址 data:是一个对象,连同请求发送到服务 ...

  10. jQuery each用法及each解析json

    $(function(){ $("button").click( function(){ var a1=""; var a2=""; var ...