![v2-05350b829c9ddcfe41d7d0acec3f41e3_1440w.jpg?source=172ae18b](http://img-02.proxy.5ce.com/view/image?&type=2&guid=88f320ef-3530-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-05350b829c9ddcfe41d7d0acec3f41e3_1440w.jpg?source=172ae18b)
我们在平常使用手机时可以看到很多的App的会有侧滑菜单栏的效果,这次我将使用SlidingPaneLayout来实现这个功能。
首先我们先看下最终效果:
![v2-8aae0fa37a651fe59c5955457cfb40ac_b.gif](http://img-03.proxy.5ce.com/view/image?&type=2&guid=88f320ef-3530-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-8aae0fa37a651fe59c5955457cfb40ac_b.gif)
1. SlidingPaneLayout
SlidingPaneLayout提供了一个水平的、多窗格的布局。使用该控件我们可以实现侧滑的效果,其布局文件下面的第一个子控件是作为一个导航视图(也就是滑动后左边视图),其余部分是内容视图。
可以简单的尝试一下
<?xml version="1.0" encoding="utf-8"?>
通过上面的布局,我们可以实现一个测滑的效果
![v2-b11059ede9242209119b5319f861f3c1_b.gif](http://img-01.proxy.5ce.com/view/image?&type=2&guid=88f320ef-3530-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-b11059ede9242209119b5319f861f3c1_b.gif)
2. 左侧栏缩放
通过下面这段代码,使得左侧栏滑动时有一个缩放的效果
SlidingPaneLayout
在onPaneSlide中有两个参数,第一个参数是被移动的view,第二个参数则是滑动时的偏移值,范围是0~1
当我们对一个View设置缩放动画时,缩放轴点默认是该View的中心点。如果我们想改变缩放轴点位置,可以通过setPivotX(float pivotX)设置缩放轴点X轴的坐标,通过setPivotY(float pivotY)设置缩放轴点Y轴的坐标。再通过setScaleX和setScaleY来实现最终的缩放效果。
实现效果:
![v2-04671fecbb2702f24ff4546f86118d87_b.gif](http://img-01.proxy.5ce.com/view/image?&type=2&guid=88f320ef-3530-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-04671fecbb2702f24ff4546f86118d87_b.gif)
在SlidingPaneLayout下添加个背景颜色效果会更好些
android:background="@color/colorPrimary"
![v2-e1bad5f44912af80f43450877c727e0a_b.gif](http://img-03.proxy.5ce.com/view/image?&type=2&guid=88f320ef-3530-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-e1bad5f44912af80f43450877c727e0a_b.gif)
3. 主要内容(右侧)缩放
在onPanelSlide方法下加上下面一段代码,即可实现
mMainView
![v2-8201366e45fbae62b9999d1e4e86b490_b.gif](http://img-02.proxy.5ce.com/view/image?&type=2&guid=88f320ef-3530-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-8201366e45fbae62b9999d1e4e86b490_b.gif)
还可以再给右边设置个阴影的效果
mMainView
4. 自定义SlidingPaneLayout
上面就是最终要实现的侧滑栏的三个最主要的内容。理解上面三个其实就可以做出一开始给的那种效果。但有些时候,可能我们不希望通过滑动来显示出左边的导航栏,而是直接通过点击一个按钮来打开左边栏。在SlidingPaneLayout中并没这样的方发来禁止它滑动,这时候我们就需要自己来自定义。
public