【自定义View】2.Android滑动侧边栏SlidingMenu的原理

本文介绍了Android经典布局框架SlidingMenu的实现原理,通过设置内容区content和菜单区menu的位置,利用滑动事件监听及setTranslationX()方法实现滑动效果。文章还提及了SimpleSlidingMenu的三种滑动模式,并提供了自定义选项。
摘要由CSDN通过智能技术生成

【难度★☆☆☆☆】Android滑动侧边栏是一个经典的布局框架,他能在有限的范围内展示更多的信息。

  在学习这个效果之前,确保你已经知道如何实现一个滑动的View,可以参考这篇文章【自定义View】1.View的滑动
  接下来就是SlidingMenu的实现思路,首先我们有两个布局content和menu,content在屏幕中,menu在屏幕左侧,要实现这个,我们可以将menu使用setTranslationX()方法左移到屏幕外,然后我们监听滑动事件,根据位移来平移content和menu。
  下面是初始化的方法

public class SimpleSlidingMenu extends RelativeLayout {
    public SimpleSlidingMenu(Context context, AttributeSet attrs) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context) {
        content = new FrameLayout(context);
        menu = new FrameLayout(context);
        addView(menu, new LayoutParams(MATCH_PARENT, MATCH_PARENT));
        addView(content, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
    }
}

  接下来监听滑动事件。

public class SimpleSlidingMenu extends RelativeLayout {
    //···
    private float lastX;
     @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                lastX = event.getRawX();
                break;
            case MotionEvent.ACTION_UP:
                scrollHelper.reset();
                break;
            case MotionEvent.ACTION_MOVE:
                float dx = event.getRawX() - lastX;
                //这里根据手指平移距离dx做平移操作
                lastX = event.getRawX();
                break;
        }
        return true;
    }
}

  SimpleSlidingMenu支持三种滑动模式,同时还允许我们自定义。
滑动
  这个做出来好像有点快了… 这个是content和menu一起滑动的

滑动
  这个只有content滑动
滑动
  这个有缩放效果,和酷狗音乐的那个差不多。

  我的所有自定义view代码都在这 https://github.com/pop1234o/CustomViewApp,欢迎star。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值