分享一个最近花了点时间才做出来的效果,先看一下做出来的效果,等以后我学会录制视频了,再传动画效果吧
我最开始拿到任务的时候,第一想法是百度,然而很难找到同类的效果,基本都是滑动的时候整个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) {
//根据当前显示的图片是续播还是删除来处理不同的操作,这里还没到实现功能的时候,就先不出来啦