** * 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
最新推荐文章于 2021-04-14 15:13:28 发布
这是一个关于创建Android侧滑菜单SliderMenu的代码实现。该组件继承自HorizontalScrollView,通过onMeasure和onLayout方法初始化和设置菜单宽度。同时,重写onTouchEvent方法来捕捉手势动作,根据滑动距离判断并平滑滚动到菜单打开或关闭的位置。
1356

被折叠的 条评论
为什么被折叠?



