标签:
SlidingDrawer(滑动式抽屉)隐藏屏外的内容,并允许用户拖拽一个handle以显示隐藏的内容。SlidingDrawer可以在垂直或者水平使用。它由两个子视图组成:一个是用户拖拽的handle(柄),另一个是随着拖动变化的 content(内容)。SlidingDrawer应当作为内部布局的覆盖来使用,也就是说SlidingDrawer内部应该使用 FrameLayout或RelativeLayout布局。SlidingDrawer的大小决定了其内容显示时所占空间的大小,所以它的尺寸一般定义 为match_parent。在XML布局中SlidingDrawer必须指定handle和content的id:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- 可以设置显示的方向 --> <SlidingDrawer android:id="@+id/slidingdraw" android:layout_width="match_parent" android:layout_height="match_parent" android:content="@+id/content" android:orientation="horizontal" android:handle="@+id/handle" > <ListView android:id="@id/content" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:id="@id/handle" android:layout_width="88dip" android:layout_height="44dip" android:contentDescription="TODO" android:src="@drawable/ic_launcher" /> </SlidingDrawer> </LinearLayout>
public class MainActivity extends Activity { //声明SlidingDrawer private SlidingDrawer mDrawer; private ImageView mImageView; private ListView lvNews; private String news[] = { "互联网产品中的情感化设计" , "有效导向社交产品的商业价值" , "移动开发者:得90后者得天下" , "用户体验:从App的加载页面说开去" , "用扁平化的界面设计吸引用户" , "实体与数字世界的交集" , "网络社区用户成长的5个思考模式" , "十大值得关注的传统企业电商" , "2013年十大热点技术发展趋势" , "了解产品的开发环节:环形设计论" , "客户忠诚度的四个层次" , "在手机背面贴张‘纸‘就能轻松充电" , "互联网公司是怎样激发你的消费欲望的" , "高效工作的信息搜集及管理术" }; @ Override protected void onCreate ( Bundle savedInstanceState ) { super.onCreate ( savedInstanceState ); setContentView ( R.layout.activity_main ); //获得SlidingDrawer mDrawer = ( SlidingDrawer ) findViewById ( R.id.slidingdraw ); mImageView = ( ImageView ) findViewById ( R.id.handle ); //获取ListView并填充内容 lvNews = ( ListView ) findViewById ( R.id.content ); lvNews.setAdapter ( new ArrayAdapter < String > ( this , android.R.layout.simple_list_item_1 , news ) ); //监听打开抽屉事件 mDrawer.setOnDrawerOpenListener ( new SlidingDrawer.OnDrawerOpenListener ( ) { @ Override public void onDrawerOpened ( ) { mImageView.setImageResource ( R.drawable.ic_launcher ); } } ); //监听关闭抽屉事件 mDrawer.setOnDrawerCloseListener ( new SlidingDrawer.OnDrawerCloseListener ( ) { @ Override public void onDrawerClosed ( ) { mImageView.setImageResource ( R.drawable.ic_launcher ); } } ); } }
推荐一篇大神自定义的SlidingDrawer
属性
android:allowSingleTap:指示是否可以通过handle打开或关闭
android:animateOnClick:指示是否当使用者按下手柄打开/关闭时是否该有一个动画。
android:content:隐藏的内容
android:handle:handle(手柄)
方法
animateClose():关闭时实现动画。
close():即时关闭
getContent():获取内容
isMoving():指示SlidingDrawer是否在移动。
isOpened():指示SlidingDrawer是否已全部打开
lock():屏蔽触摸事件。
setOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener):SlidingDrawer关闭时调用
unlock():解除屏蔽触摸事件。
toggle():切换打开和关闭的抽屉SlidingDrawer。
Android -- 滑式抽屉SlidingDrawer(非原创)
标签:
原文地址:http://www.cnblogs.com/SM-t/p/4300810.html