側滑菜單SliderMenu

**
 * Created by xalo on 16/8/31.
 */
public class SilderMenus extends HorizontalScrollView {
    boolean once = false;
    LinearLayout linearLayout;
    int scrollWidth;

    //在父佈局準備加載子佈局時調用
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        if (!once) {
            //初始化側滑佈局
            linearLayout = (LinearLayout) findViewById(R.id.ll);
            once = true;
        }

    }

    //在修改子佈局的過程中調用
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        if (changed) {
            //獲得側滑菜單寬度
            scrollWidth = linearLayout.getWidth();
            //隱藏側滑菜單--側滑菜單在主界面的左側(若側滑菜單在主界面的右側,爲默認隱藏)
            this.scrollTo(scrollWidth, 0);
        }
    }

    //捕捉手勢動作
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        int action = ev.getAction();
        switch (action) {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                break;
            case MotionEvent.ACTION_UP:
                checkScoll();
                return true;
            case MotionEvent.ACTION_CANCEL:
                break;
        }
        return super.onTouchEvent(ev);
    }

    //檢查滑動的距離
    private void checkScoll() {
        if (getScrollX() > scrollWidth / 2) {
            smoothScrollTo(scrollWidth, 0);
        } else {
            smoothScrollTo(0, 0);
        }
    }


    public SilderMenus(Context context) {
        super(context);
    }

    public SilderMenus(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SilderMenus(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public SilderMenus(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

}
發佈了26 篇原創文章 · 獲贊 13 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章