** * 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); } }
側滑菜單SliderMenu
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.