Android 指定控件手势滑动

一、创建手势侦听对象

public class MyGestureListener extends SimpleOnGestureListener {



private Context mContext;
private int mWith;//屏幕宽度

public MyGestureListener(Context context, int width) {
mContext = context;
mWith = width;
}


@Override
// 按下触摸屏按下时立刻触发
public boolean onDown(MotionEvent e) {
return false;
}


// 短按,触摸屏按下片刻后抬起,会触发这个手势,如果迅速抬起则不会
@Override
public void onShowPress(MotionEvent e) {
}


// 释放,手指离开触摸屏时触发(长按、滚动、滑动时,不会触发这个手势)
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}


// 滑动,按下后滑动
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

return false;
}


// 长按,触摸屏按下后既不抬起也不移动,过一段时间后触发
@Override
public void onLongPress(MotionEvent e) {
}


// 滑动,触摸屏按下后快速移动并抬起,会先触发滚动手势,跟着触发一个滑动手势
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float x = e2.getX() - e1.getX();
float y = e2.getY() - e1.getY();
float x_limit = mWith / 4;//滑动屏幕1/4
float x_abs = Math.abs(x);
float y_abs = Math.abs(y);
if (x_abs >= y_abs) {
if (x > x_limit || x < -x_limit) {
if (x > 0) {
Toast.makeText(mContext, "滑动了", Toast.LENGTH_SHORT).show();
}
}
}
return true;
}


// 双击,手指在触摸屏上迅速点击第二下时触发
@Override
public boolean onDoubleTap(MotionEvent e) {
return false;
}


// 双击后按下跟抬起各触发一次
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}


// 单击
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}

}


二、主java文件

public class Erasure extends Activity implements OnTouchListener{


private TextView tv = null;
//手势识别
private GestureDetector mGestureDetector;
 
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_erasure);
       tv = (TextView)findViewById(R.id.tv1);

                WindowManager wm = getActivity().getWindowManager();
int width = wm.getDefaultDisplay().getWidth();
       mGestureDetector = new GestureDetector(this, new MyGestureListener(this,with));
       tv.setOnTouchListener(this);
       
   }

public boolean onTouch(View v, MotionEvent event) {
 return mGestureDetector.onTouchEvent(event);
}
 
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值