SlidingDrawer是从SDK1.5才加入的,具有抽屉展示的效果,可以实现水平和垂直两个方向的展开方式(android:orientation),但是现在google官方已经不推荐使用,左右滑动使用官方地DrawerLayout或者开源的框架slidingMenu,最近还有和actionBar结合使用的NavigationDrawer。如果是上下滑动,目前官方没有替代的控件,可以Scroller类自定义一个。本文主要介绍一下SlidingDrawer的用法,其它的读者可以自己尝试一下,或者我会在后期陆续进行介绍。
1.主要属性
android:allowSingleTap:指示是否可以通过handle打开或关闭
android:orientation:滑动方向(水平和垂直方向)
android:animateOnClick:指示是否当使用者按下手柄打开/关闭时是否该有一个动画。
android:content:隐藏的内容
android:handle:handle(手柄)
android:topOffset:手柄与屏幕上边界的间距(负值将会把手柄隐藏)
<SlidingDrawer
android:id="@+id/slidingdrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:content="@+id/content"
android:handle="@+id/handle"
android:orientation="vertical"
android:topOffset="-50dp" >
<ImageView
android:id="@+id/handle"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:background="@drawable/popup_btn3"
android:clickable="false"
/>
<RelativeLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_pop_main"
android:clickable="true"
android:orientation="vertical" >
//自定义抽屉展开后要显示的内容
</LinearLayout>
</SlidingDrawer>
2.主要方法
animateClose():关闭时带有动画效果。
close():即时关闭,不带有动画效果
getContent():获取SlidingDrawer内容
isMoving():返回SlidingDrawer是否在移动。
isOpened():返回SlidingDrawer是否已全部打开
lock():屏蔽触摸事件。
unlock():解除屏蔽触摸事件。
toggle():切换打开和关闭抽屉SlidingDrawer。
3.监听器接口
(1)OnDrawerOpenListener:SlidingDrawer的打开事件监听接口
mDrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener()
{
@Override
public void onDrawerOpened() {
// SlidingDrawer抽屉打开时触发该方法
}
});
(2)OnDrawerCloseListener:SlidingDrawer的关闭事件监听接口
mDrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener(){
//SlidingDrawer抽屉关闭时触发该方法
@Override
public void onDrawerClosed() {
//SlidingDrawer关闭后要处理的事情
} });
(3)OnDrawerScrollListener:SlidingDrawer的滑动事件监听接口 mDrawer.setOnDrawerScrollListener(new SlidingDrawer.OnDrawerScrollListener(){
@Override
//SlidingDrawer滑动结束触发该方法
public void onScrollEnded() {
tv.setText("结束拖动");
}
@Override
//SlidingDrawer滑动开始触发该方法
public void onScrollStarted() {
tv.setText("开始拖动");
}
}); }
}