android 橫向滑動分類效果實現
阿新 • • 發佈:2019-01-06
大家看上面的分類欄,我們這個分類數目不固定,要求可以一個一個橫向滑動。不是viewPager分頁 一螢幕放4個,一滑動一下子顯示下一頁的4個。當然這種效果一般都是用viewPager實現。實現方法我晚點會寫一篇文章連結到這裡。
這個橫向的列表之前的部落格已經寫過了用的HorizontalListView,所以這個橫向滑動列表的實現 我就不再寫一次了 ,感興趣的可以直接看這篇文章
但是用這個實現了列表後,發現這個效果對使用者來講不是特別友好,因為可能一部分使用者不知道那個列表是滑動的,所以特意在下面加了兩個小圓點這兩個小圓點的新增方式就是監聽 橫向列表的onTouch事件然後在onTouch事件裡面增加判斷讓當前類繼承 View.OnTouchListener, GestureDetector.OnGestureListenermDocumentCategoryHlv.setOnTouchListener(this);
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); } }
大概意思就是這樣,希望可以幫助到大家,如果大家還有其他問題,可以加入我的qq群:
開發一群:454430053開發二群:537532956