Android实现上下菜单双向滑动效果实现上下菜单双向滑动效果
这是研究了网上大神双向左右滑动后实现的上下双向滑动特效,有兴趣的朋友可以看下面代码,注释很详细,原理就是根据手
指滑动的方向,来将上下两个布局进行显示与隐藏。主要用了onTouch方法,获取滑动的距离进行偏移。
import android.content.Context;
import android.os.AsyncTask;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.widget.RelativeLayout;
public class UpAndDownSlidinglayout extends RelativeLayout implements OnTouchListener{
/**
* 滚动显示和隐藏上侧布局时,手指滑动需要达到的速度。
*/
public static final int SNAP_VELOCITY = 200;
/**
* 滑动状态的一种,表示未进行任何滑动。
*/
public static final int DO_NOTHING = 0;
/**
* 滑动状态的一种,表示正在滑出上侧菜单。
*/
public static final int SHOW_UP_MENU = 1;
/**
* 滑动状态的一种,表示正在滑出下侧菜单。
*/
public static final int SHOW_DOWN_MENU = 2;
/**
* 滑动状态的一种,表示正在隐藏上侧菜单。
*/
public static final int HIDE_UP_MENU = 3;
/**
* 滑动状态的一种,表示正在隐藏下侧菜单。
*/
public static final int HIDE_DOWN_MENU = 4;
/**
* 记录当前的滑动状态
*/
private int slideState;
/**
* 屏幕宽度值。
*/
private int screenWidth;
private int screenHeight;
/**
* 在被判定为滚动之前用户手指可以移动的最大值。
*/
private int touchSlop;
/**
* 记录手指按下时的横坐标。
*/
private float xDown;
/**
* 记录手指按下时的纵坐标。
*/