1. 程式人生 > >android 橫向滑動分類效果實現

android 橫向滑動分類效果實現

大家看上面的分類欄,我們這個分類數目不固定,要求可以一個一個橫向滑動。不是viewPager分頁 一螢幕放4個,一滑動一下子顯示下一頁的4個。當然這種效果一般都是用viewPager實現。實現方法我晚點會寫一篇文章連結到這裡。

這個橫向的列表之前的部落格已經寫過了用的HorizontalListView,所以這個橫向滑動列表的實現 我就不再寫一次了 ,感興趣的可以直接看這篇文章

但是用這個實現了列表後,發現這個效果對使用者來講不是特別友好,因為可能一部分使用者不知道那個列表是滑動的,所以特意在下面加了兩個小圓點這兩個小圓點的新增方式就是監聽 橫向列表的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);
        }
    }

大概意思就是這樣,希望可以幫助到大家,如果大家還有其他問題,可以加入我的qq群:
開發一群:454430053開發二群:537532956