android 横向滑动分类效果实现

举报
再见孙悟空_ 发表于 2022/01/13 00:45:43 2022/01/13
【摘要】   大家看上面的分类栏,我们这个分类数目不固定,要求可以一个一个横向滑动。不是viewPager分页 一屏幕放4个,一滑动一下子显示下一页的4个。当然这种效果一般都是用viewPager实现。实现方法我晚点会写一篇文章链接到这里。 这个横向的列表之前的博客已经写过了用的HorizontalListView,所以这个...

 

大家看上面的分类栏,我们这个分类数目不固定,要求可以一个一个横向滑动。不是viewPager分页 一屏幕放4个,一滑动一下子显示下一页的4个。当然这种效果一般都是用viewPager实现。实现方法我晚点会写一篇文章链接到这里。

这个横向的列表之前的博客已经写过了用的HorizontalListView,所以这个横向滑动列表的实现 我就不再写一次了 ,感兴趣的可以直接看这篇文章

Android 横向ListView实现 

但是用这个实现了列表后,发现这个效果对用户来讲不是特别友好,因为可能一部分用户不知道那个列表是滑动的,所以特意在下面加了两个小圆点
这两个小圆点的添加方式就是监听 横向列表的onTouch事件
  mDocumentCategoryHlv.setOnTouchListener(this);
  
然后在onTouch事件里面增加判断
让当前类继承 View.OnTouchListener, GestureDetector.OnGestureListener

   
  1. private GestureDetector gd = new GestureDetector(this);
  2. private int FLING_MIN_DISTANCE = 200;// 水平方向手指滑动距离最小值
  3. private int FLING_MIN_VELOCITY = 0;// 垂直方向手指滑动距离最小值

   
  1. @Override
  2. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  3. if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
  4. // SingleToast.show(getContext(), "向左手势");
  5. setTip(2);
  6. } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
  7. // SingleToast.show(getContext(), "向右手势");
  8. setTip(1);
  9. }
  10. return false;
  11. }
  12. @Override
  13. public boolean onTouch(View view, MotionEvent motionEvent) {
  14. return gd.onTouchEvent(motionEvent);
  15. }
判断滑动状态,给小圆点设置不同图片就实现了上图的效果
 

   
  1. private void setTip(int flag) {
  2. if (flag == 1) {
  3. mTipLeftIv.setImageResource(R.drawable.tip_yes);
  4. mTipRightIv.setImageResource(R.drawable.tip_no);
  5. } else if (flag == 2) {
  6. mTipLeftIv.setImageResource(R.drawable.tip_no);
  7. mTipRightIv.setImageResource(R.drawable.tip_yes);
  8. }
  9. }

大概意思就是这样,希望可以帮助到大家,如果大家还有其他问题,可以加入我的qq群:
开发一群:454430053开发二群:537532956
  

文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。

原文链接:wukong.blog.csdn.net/article/details/79746440

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。