package com.example.administrator.myapplication;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.GestureDetector;import android.view.MotionEvent;import android.widget.RelativeLayout;import android.widget.Toast;/** * Created by Administrator on 2016-09-13. */public class MyLayout extends RelativeLayout implements GestureDetector.OnGestureListener {    private    int verticalMinDistance = 20;    private    int minVelocity = 0;    private MyLayoutCallBack myLayoutCallBack;    private GestureDetector gestureDetector;    Context context;    public void setCallBack(MyLayoutCallBack myLayoutCallBack) {        this.myLayoutCallBack = myLayoutCallBack;    }    public MyLayout(Context context) {        super(context);        gestureDetector = new GestureDetector(context, this);        this.context = context;    }    public MyLayout(Context context, AttributeSet attrs) {        super(context, attrs);        gestureDetector = new GestureDetector(context, this);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        this.gestureDetector.onTouchEvent(event);        return true;    }    @Override    public boolean onDown(MotionEvent e) {        Log.d("pingan", "onDown");        return true;    }    @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) {        Log.d("pingan", "onScroll" + distanceX + "distanceY:" + distanceY);        if (distanceX < -verticalMinDistance) {            Log.d("pingan", "向右手势");            myLayoutCallBack.scrollByX(20);        } else if (distanceX > verticalMinDistance){            Log.d("pingan", "向左手势");            myLayoutCallBack.scrollByX(-20);        }else if (distanceY <- verticalMinDistance) {            Log.d("pingan", "向下手势");            myLayoutCallBack.scrollByY(20);        } else if (distanceY > verticalMinDistance ) {            Log.d("pingan", "向上手势");            myLayoutCallBack.scrollByY(-20);        }        return true;    }    @Override    public void onLongPress(MotionEvent e) {    }    @Override    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {        Log.d("pingan", "onFling");        if (e1.getX()                - e2.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) {            Log.d("pingan", "向左手势");            myLayoutCallBack.scrollByX(-20);        } else if ((e2.getX() - e1.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity)) {            Log.d("pingan", "向右手势");            myLayoutCallBack.scrollByX(20);        } else if (e1.getY()                - e2.getY() > verticalMinDistance && Math.abs(velocityY) > minVelocity) {            Log.d("pingan", "向上手势");            myLayoutCallBack.scrollByY(-20);        } else if ((e2.getY() - e1.getY() > verticalMinDistance && Math.abs(velocityY) > minVelocity)) {            Log.d("pingan", "向下手势");            myLayoutCallBack.scrollByY(20);        }        return true;    }}

更多相关文章

  1. android 手势识别!
  2. ListView实现滚动动画
  3. android GestureDetector 关于手势的判断
  4. android手势缩放
  5. 仿Google应用动态隐藏显示状态栏
  6. 实现IOS版的抽屉效果(点击,拖拽滑动)
  7. android手势操作&&实现滑动切换activity
  8. Android通过手势实现翻页效果
  9. Android(安卓)ActionBar返回父级Activity

随机推荐

  1. 实现Android(安卓)滑动退出Activity的功
  2. ImageView的属性android:scaleType,即Imag
  3. Android去掉状态栏和标题栏的两种方式
  4. Android(安卓)studio 工具中的“Attach D
  5. Android中的颜色设置
  6. Android平台开发-Android(安卓)keypad ma
  7. 【代码】android 通过GPS获取用户地理位
  8. android ndk 编译 libcurl
  9. Android访问WCF服务(使用json实现参数传
  10. Android所有系统资源图标android.R.drawa