自定义view实现侧滑删除效果

分享一个最近花了点时间才做出来的效果,先看一下做出来的效果,等以后我学会录制视频了,再传动画效果吧

我直接贴了项目的效果图,难点就是滑动的时候删除按钮的背景和文字变化

我最开始拿到任务的时候,第一想法是百度,然而很难找到同类的效果,基本都是滑动的时候整个item要跟着一起滑动,最后终于在鸿神的博客里面找到一个在item上弹出一个删除按钮的效果,还顺便解除了listview上下滑动和左右滑动的冲突,在这里方式博客地址以示尊重

http://blog.csdn.net/lmj623565791/article/details/22961279

这里我用的自定义listview,在自定义的listview中放上自定义的view,用ondraw的方式去画三种不同状态的按钮,最开始是想图简单,直接用的两张图片去做切换的效果,后来发现图片会有拉伸的问题,处理起来也比较麻烦,所以直接在大牛的指引下开启了自定义view的道路。

下来我们来看看实现的过程,只需要看自定义listview和view就行啦
HistoryListview.java

package com.example.yj;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.ListView;

import com.example.yj.R;

public class HistoryListview extends ListView {
   

    private boolean IsSliding; //是否左右滑动

    private HistoryDeleteButtonView mDeleteButton;

    private LayoutInflater myInflater;
    private View mCurrentView; //当前手指触摸的View
    private int mCurrentViewPos; //当前手指触摸的位置

    private int xDown;//手指按下时的x坐标
    private int yDown; //手指按下时的y坐标
    private int xMove;//手指移动时的x坐标
    private int yMove; //手指移动时的y坐标
    private int touchSlop; //用户滑动的最小距离

    public HistoryListview(Context context, AttributeSet attrs) {
        super(context, attrs);
        myInflater = LayoutInflater.from(context);
        touchSlop = ViewConfiguration.get(context).getScaledTouchSlop();//移动的最小距离


        View view = myInflater.inflate(R.layout.history_list_item, null);
        mDeleteButton = (HistoryDeleteButtonView) view.findViewById(R.id.deleteRecord);
        mDeleteButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
            //根据当前显示的图片是续播还是删除来处理不同的操作,这里还没到实现功能的时候,就先不出来啦
            
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值