Android开源:SlideLayout-超级迷你轻量级全方向完美侧滑控件
myqq9877
8年前
<h2>SlideLayout</h2> <p>纯手工超级迷你轻量级全方向完美滑动处理侧滑控件(比官方 support v4 包 SlidingPaneLayout 控件更加 Q 迷你,累计代码不足 300 行),支持上下左右有各种侧拉,可配置侧拉松手临界距离,支持单独使用、ListView、GridView、RecycleView、ScrollView、ViewPager 等各种嵌套(作为 item 使用或者作为以上所有控件的父容器使用),具体不同配置展示效果如下图。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/fb2447724b5dc6a59c66941565e57d27.gif"></p> <h2>说明文档</h2> <p>如下是关于 SlideLayout 的相关使用方式、属性说明、拓展自定义的解释说明。</p> <h3>使用样例</h3> <p>实现类似手机 QQ 侧滑效果,ListView 向右侧滑拉出侧边栏。</p> <pre> <code class="language-java"><cn.yan.library.SlideLayout android:layout_width="match_parent" android:layout_height="match_parent" app:slideDirection="fromLeft" app:slideCriticalValue="50dp"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:entries="@array/demo_array"/> <TextView android:background="@android:color/holo_red_light" android:layout_width="100dp" android:layout_height="match_parent" android:text="我是侧滑区域"/> </cn.yan.library.SlideLayout></code></pre> <p>实现类似手机 QQ ListView 聊天列表任意 item 向左滑动呼出删除按钮效果。</p> <pre> <code class="language-java"><cn.yan.library.SlideLayout android:layout_width="match_parent" android:layout_height="80dp"> <TextView android:id="@+id/content_id" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent"/> <LinearLayout android:layout_width="200dp" android:layout_height="match_parent" android:orientation="horizontal"> <TextView android:id="@+id/slide_id" android:background="@android:color/holo_blue_dark" android:layout_width="100dp" android:layout_height="match_parent" android:text="删除"/> <TextView android:id="@+id/slide1_id" android:background="@android:color/holo_green_dark" android:layout_width="100dp" android:layout_height="match_parent" android:text="收藏"/> </LinearLayout> </cn.yan.library.SlideLayout></code></pre> <h3>已实现类说明</h3> <table> <thead> <tr> <th>类别</th> <th>类名</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>library</td> <td>SlideLayout</td> <td>支持配置各种方向侧滑和各种嵌套或者被嵌套的侧滑控件。</td> </tr> </tbody> </table> <h3>属性说明</h3> <table> <thead> <tr> <th>属性</th> <th>含义</th> </tr> </thead> <tbody> <tr> <td>app:slideCriticalValue</td> <td>SlideLayout 任意方向侧滑拉出多大距离后松手敏感距离,譬如侧滑大于 50dp 后松手则自动滑开,小于 50 dp 内松手则自动收起;不设置默认为 SlideLayout 控件第二个子成员 width 的二分之一。</td> </tr> <tr> <td>app:slideDirection</td> <td>侧滑从哪边拉出,默认为从右侧拉出,可取值为 fromRight、fromLeft、fromTop、fromBottom。</td> </tr> </tbody> </table> <h3>SlideLayout 提供方法说明</h3> <table> <thead> <tr> <th>方法</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>int getSlideState()</td> <td>获取当前侧滑控件所处状态,STATE_CLOSE、STATE_SLIDING、STATE_OPEN。</td> </tr> <tr> <td>void smoothCloseSlide()</td> <td>平滑的收起侧滑。</td> </tr> <tr> <td>void smoothOpenSlide()</td> <td>平滑的打开侧滑。</td> </tr> </tbody> </table> <h3>SlideLayout 使用注意事项</h3> <p>SlideLayout 控件有且必须包含两个子控件,第一个为 content 布局,默认撑满整个 SlideLayout,第二个为 slide 布局,默认不可见;切记两个子控件所处顺序,子控件层级不限,具体模板如下:</p> <pre> <code class="language-java"><cn.yan.library.SlideLayout android:layout_width="match_parent" android:layout_height="match_parent"> <控件一(Content),不限嵌套层级等,默认可见/> <控件二(slide),不限嵌套层级等,默认不可见/> </cn.yan.library.SlideLayout></code></pre> <h2> </h2> <p> </p> <p> </p>