Android SlidingDrawer控件的使用
2018-02-19 20:50
555 查看
开发环境:Android Studio3.0![](https://img-blog.csdn.net/20180219205327978)
android:id="@+id/drawer1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:content="@+id/Viewcontent"
android:handle="@+id/handle"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</SlidingDrawer>
上面的代码是右侧抽屉的代码,我们抽屉把手和抽屉内容都还没写,先来详解一下代码android:content=”@+id/Viewcontent”,是抽屉的布局内容的IDandroid:handle=”@+id/handle”,为抽屉把手的布局IDandroid:orientation=”horizontal”,SlidingDrawer的方向。可选horizontal(水平方向对齐)和vertical( 竖直方向对齐)
android:id="@+id/drawer1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:content="@+id/Viewcontent"
android:handle="@+id/handle"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<!--设置引导按钮-->
<LinearLayout
android:id="@id/handle"
android:layout_width="35dp"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/myImage1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/handle_img" />
</LinearLayout>
<!--设置抽屉内容-->
<ImageView
android:id="@+id/Viewcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/iv_bg" />
</SlidingDrawer>
设置好后,运行即可显示图中效果图了
@Override
public boolean onTouch(View v, MotionEvent event) {
if (!slidingDrawer.isMoving()) {
if (slidingDrawer.isOpened()) {
slidingDrawer.close();
}
}
return false;
}
});
其中slidingDrawer为通过ID寻找到的SlidingDrawer名称,自行绑定即可。SlidingDrawer为我们提供了两个判断函数,isMoving()是指判断是否正在移动,我们不能在抽屉拖动的时候对它进行关闭,(现在手机都是多点触摸,如果不判断的话,就会出问题)isOpened()指是否已经开启抽屉,如果已经打开我们才关闭,没有打开无需执行事件
布局简介
SlidingDrawer(滑动式抽屉)隐藏屏外的内容,并允许用户拖拽一个handle以显示隐藏的内容。SlidingDrawer可以在垂直或者水平使用。它由两个子视图组成:一个是用户拖拽的handle(柄),另一个是随着拖动变化的content(内容)在XML布局中SlidingDrawer必须指定handle和content的id。效果图
布局详解
一个抽屉有抽屉把和抽屉盒组成,本布局也是一样<SlidingDrawerandroid:id="@+id/drawer1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:content="@+id/Viewcontent"
android:handle="@+id/handle"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</SlidingDrawer>
上面的代码是右侧抽屉的代码,我们抽屉把手和抽屉内容都还没写,先来详解一下代码android:content=”@+id/Viewcontent”,是抽屉的布局内容的IDandroid:handle=”@+id/handle”,为抽屉把手的布局IDandroid:orientation=”horizontal”,SlidingDrawer的方向。可选horizontal(水平方向对齐)和vertical( 竖直方向对齐)
可选设置代码
android:allowSingleTap,指示是否可通过单击handle打开或关闭(如果是false,刚用户必须通过拖动,滑动或者使用轨迹球,来打开/关闭抽屉。)默认的是true。android:animateOnClick,指示当用户点击handle的时候,抽屉是否以动画的形式打开或关闭。默认的是true。android:bottomOffset,Handle距离SlidingDrawer底部的额外距离接着是布局把手和抽屉内容,下面是完整代码(已经包含上面代码)<SlidingDrawerandroid:id="@+id/drawer1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:content="@+id/Viewcontent"
android:handle="@+id/handle"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<!--设置引导按钮-->
<LinearLayout
android:id="@id/handle"
android:layout_width="35dp"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/myImage1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/handle_img" />
</LinearLayout>
<!--设置抽屉内容-->
<ImageView
android:id="@+id/Viewcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/iv_bg" />
</SlidingDrawer>
设置好后,运行即可显示图中效果图了
完善抽屉
你可以发现一个问题,那就是只能点击把手和拖动把手才能让抽屉还原,如果点击抽屉外面部分,抽屉并不会还原,所以需要我们重写SlidingDrawer的触摸事件。Java代码如下slidingDrawer.setOnTouchListener(new View.OnTouchListener() {@Override
public boolean onTouch(View v, MotionEvent event) {
if (!slidingDrawer.isMoving()) {
if (slidingDrawer.isOpened()) {
slidingDrawer.close();
}
}
return false;
}
});
其中slidingDrawer为通过ID寻找到的SlidingDrawer名称,自行绑定即可。SlidingDrawer为我们提供了两个判断函数,isMoving()是指判断是否正在移动,我们不能在抽屉拖动的时候对它进行关闭,(现在手机都是多点触摸,如果不判断的话,就会出问题)isOpened()指是否已经开启抽屉,如果已经打开我们才关闭,没有打开无需执行事件
写在最后
Android 6已经不建议使用了,但是用的还是挺方便的,虽说是向下兼容的,但是对于更多的功能需求,SlidingDrawer是无法满足的了源码下载:http://download.csdn.net/download/applek_case/10253297相关文章推荐
- Android 控件使用之SlidingDrawer
- Android之SlidingDrawer使用
- Android控件之SlidingDrawer(滑动式抽屉)详解与实例
- Android控件之SlidingDrawer(滑动式抽屉)
- Android 抽屉类SlidingDrawer的使用
- Android 抽屉类SlidingDrawer的使用
- Android控件之SlidingDrawer(滑动式抽屉)
- Android控件之SlidingDrawer(滑动式抽屉)
- Android控件之SlidingDrawer(滑动式抽屉)详解与实例
- Android控件之SlidingDrawer(滑动式抽屉)详解与实例分享
- Android 抽屉类SlidingDrawer的使用
- 103_slidingdrawer控件的使用
- 关于mono for android 滑动目录控件的使用 SlidingMenuSharp 控件
- Android 抽屉类SlidingDrawer的使用
- Android控件之SlidingDrawer(滑动式抽屉)
- 【Android开发日记】使用 NavigationDrawer + fragment 实现sherlockActionBar+slidingmenu 功能
- Android控件之SlidingDrawer(滑动式抽屉)详解与实例
- Android控件之SlidingDrawer(滑动式抽屉)详解与实例
- Android控件之SlidingDrawer(滑动式抽屉)
- Android控件之SlidingDrawer(滑动式抽屉)