大家看上面的分类栏,我们这个分类数目不固定,要求可以一个一个横向滑动。不是viewPager分页 一屏幕放4个,一滑动一下子显示下一页的4个。当然这种效果一般都是用viewPager实现。实现方法我晚点会写一篇文章链接到这里。
这个横向的列表之前的博客已经写过了用的HorizontalListView,所以这个横向滑动列表的实现 我就不再写一次了 ,感兴趣的可以直接看这篇文章
Android 横向ListView实现
但是用这个实现了列表后,发现这个效果对用户来讲不是特别友好,因为可能一部分用户不知道那个列表是滑动的,所以特意在下面加了两个小圆点
这两个小圆点的添加方式就是监听 横向列表的onTouch事件
mDocumentCategoryHlv.setOnTouchListener(this);
然后在onTouch事件里面增加判断
让当前类继承 View.OnTouchListener, GestureDetector.OnGestureListener
private GestureDetector gd = new GestureDetector(this); private int FLING_MIN_DISTANCE = 200;// 水平方向手指滑动距离最小值 private int FLING_MIN_VELOCITY = 0;// 垂直方向手指滑动距离最小值
@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // SingleToast.show(getContext(), "向左手势"); setTip(2); } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // SingleToast.show(getContext(), "向右手势"); setTip(1); } return false; } @Override public boolean onTouch(View view, MotionEvent motionEvent) { return gd.onTouchEvent(motionEvent); }
判断滑动状态,给小圆点设置不同图片就实现了上图的效果
private void setTip(int flag) { if (flag == 1) { mTipLeftIv.setImageResource(R.drawable.tip_yes); mTipRightIv.setImageResource(R.drawable.tip_no); } else if (flag == 2) { mTipLeftIv.setImageResource(R.drawable.tip_no); mTipRightIv.setImageResource(R.drawable.tip_yes); } }