最近项目在做日历签到板块 因为之前上学的时候敲过一个关于日历的Demo
所以直接用上了 用的就是GridView
的实现 上一篇文章也解决了
有关GridView适配尺寸的问题 https://blog.csdn.net/Life_s/article/details/80509899
之前做的日历不能滑动,在当今的app中有那个日历是不能滑动的呀?那么问题来了,下面这个问题是解决了GridView 实现左右分页滑动
的效果 因为我不会做Gif图 这里就直接说使用方法吧
问题肯定可以解决的 相信我!
不废话了 直接上代码!
首先获取手势识别类
第一步
//获取手势识别监听
GestureDetector gesture_detector;
第二步
//在onCreate的时候初始化该类和监听
gesture_detector = new GestureDetector(this);
mGridView.setLongClickable(true);//条件一
mGridView.setOnTouchListener(this);//条件二
条件一 是使获取到屏幕的监听事件,如果没有这句的话就获取不到屏幕的监听事件
条件二 是因为在屏幕的左右滑动中OnTouchListener和OnGestureListener结合使用
所以在这个地方必须要有这句才能实现手势的识别。
第三步
- 以下方法不分先后顺序
@Override
public boolean onDown(MotionEvent motionEvent) {
return false;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
}
//自定义可以滑动的范围值和速率
private static final int MaxWidth = 80;
private static final int MaxSpeed = 200;
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
//可以判断左右手势,或者增加自己的手势判断
//在这里增加相应的手势处理函数来完成相应的界面切换效果
if (event1.getX() - event2.getX() > MaxWidth && Math.abs(velocityX) > MaxSpeed) {
//右滑
nextMonth();
return true;
} else if (event2.getX() - event1.getX() > MaxWidth
&& Math.abs(velocityX) > MaxSpeed) {
//左滑
lastMonth();
return true;
}
return true;
}
@Override
public boolean onTouch(View view, MotionEvent event) {
return this.gesture_detector.onTouchEvent(event);
}
滑动上月和下月的方法
private void lastMonth() {
month--;
//月份从0开始,-1上一年的最后一天
if (month == -1) {
year--;
month = 11;
}
setDate();
calc();
}
private void nextMonth() {
month++;
if (month == 12) {
year++;
month = 0;
}
setDate();
calc();
}
反正图也不能滑 就看下图吧: