android微信列表滑动删除,Android仿微信对话列表滑动删除效果

本文介绍如何在Android中实现类似微信对话列表的滑动删除效果,基于SwipeListView库进行了重构。通过ListView的pointToPosition和getChildAt方法获取滑动对象,并在onTouchEvent中计算滑动距离,实现滑动删除的交互。提供了SwipeListView关键代码示例。
摘要由CSDN通过智能技术生成

微信对话列表滑动删除效果很不错的,借鉴了github上SwipeListView(项目地址:https://github.com/likebamboo/SwipeListView),在其上进行了一些重构,最终实现了微信对话列表滑动删除效果。

实现原理 1.通过ListView的pointToPosition(int x,int y)来获取按下的position,然后通过android.view.ViewGroup.getChildAt(position)来得到滑动对象swipeView

2.在onTouchEvent中计算要滑动的距离,调用swipeView.scrollTo即可。

运行效果如下

d9782be6a62e33fed6438dcf27e80c51.png

1eb8eb5e6291d3fe65942e7d348e2a90.png

46b80751163dde55229b1faa12daa411.png

下面是最核心的部分SwipeListView代码:

package com.fxsky.swipelist.widget;

import android.annotation.SuppressLint;

import android.content.Context;

import android.content.res.TypedArray;

import android.os.Handler;

import android.os.Message;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.View;

import android.widget.ListView;

import com.fxsky.swipelist.R;

public class SwipeListView extends ListView {

private Boolean mIsHorizontal;

private View mPreItemView;

private View mCurrentItemView;

private float mFirstX;

private float mFirstY;

private int mRightViewWidth;

// private boolean mIsInAnimation = false;

private final int mDuration = 100;

private final int mDurationStep = 10;

private boolean mIsShown;

public SwipeListView(Context context) {

this(context,null);

}

public SwipeListView(Context context,AttributeSet attrs) {

this(context,attrs,0);

}

public SwipeListView(Context context,AttributeSet attrs,int defStyle) {

super(context,defStyle);

TypedArray mTypedArray = context.obtainStyledAttributes(attrs,R.styleable.swipelistviewstyle);

//获取自定义属性和默认值

mRightViewWidth = (int) mTypedArray.getD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值