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(非原创)的更多相关文章

  1. android自定义实现抽屉SlidingDrawer的功能

    最近项目中需要实现上拉功能,首先想到的就是Android本身自带的抽屉SlidingDrawer,最后也实现了不过,出现的问题就是设置背景色问题,handler和content是两个不同的部分,这就造 ...

  2. Vue 仿QQ左滑删除功能(非原创)

    非原创,摘选来源:http://www.jb51.net/article/136221.htm. 废话不多说,相当实用,先记录. Html代码: <div class="contain ...

  3. Android Activity 切换动画(非原创)

    在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity ...

  4. Android测试框架1(非原创)

    1.继承AndroidTestCase :public class JunitTest3 extends AndroidTestCase {} 2.在AndroidManifest.xml清单文件中添 ...

  5. Android 多线程断点下载(非原创)

    1.服务器的CPU分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服务器资源,这里在客户端开启多个线程来从服务器下载资源 2.fragment_ma ...

  6. Android测试框架2(非原创)

    package com.example.sqlitedatabase.test; import android.content.ContentValues;import android.databas ...

  7. 微信小程序 - 沉浸式抽屉(非组件)

    高度有限制,可作为管理界面,点击下载示例:drawer

  8. Android控件之SlidingDrawer(滑动式抽屉)详解与实例

    SlidingDrawer效果想必大家也见到过,它就是1.5模拟器上进入应用程序列表的效果.下面是截图 一.简介 SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它 ...

  9. Android: SlidingDrawer(滑动式抽屉)

    Android控件之SlidingDrawer(滑动式抽屉)详解与实例 一.简介  SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它可以垂直或水平滑动,它有俩个V ...

随机推荐

  1. Delphi之DLL知识学习1---什么是DLL

    DLL(动态链接库)是程序模块,它包括代码.数据或资源,能够被其他的Windows 应用程序共享.DLL的主要特点之一是应用程序可以在运行时调入代码执行,而不是在编译时链接代码,因此,多个应用程序可以 ...

  2. Filp Game

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 25573   Accepted: 11052 题目链接: ...

  3. 用脚本创建和恢复 DB2数据库

    CREATE DATABASE AUTOMATIC STORAGE YES ON 'C:\' DBPATH ON 'C:\' USING CODESET GBK TERRITORY CN COLLAT ...

  4. go-martini 简单分析之二

    martini.go 对路由采用正则表达式处理,最终转化成正则表达式. 添加route对应的调用栈 按照生成,验证,添加的步骤 route := newRoute(method, pattern, h ...

  5. hdu 4734 数位dp

    给一个数A (十进制表示形式为AnAn-1An-2 ... A2A1,定义函数 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,给一个B, ...

  6. xcrun: error: active developer path ("/XX") does not exist

    MAC OS 10.9下执行命令 svn --version 报出如下错误: xcrun: error: active developer path ("/Users/username/Do ...

  7. android selector(转)

    Selector的结构描述: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:a ...

  8. (C#基础) byte[] 之初始化, 赋值,转换。(转)

    byte[] 之初始化赋值 用for loop 赋值当然是最基本的方法,不过在C#里面还有其他的便捷方法. 1. 创建一个长度为10的byte数组,并且其中每个byte的值为0. byte[] myB ...

  9. Apache Kafka for Item Setup

    At Walmart.com in the U.S. and at Walmart's 11 other websites around the world, we provide seamless ...

  10. Mongdb使用客户端

    安装Robomongo图形化管理工具 Robomongo是一个基于 Shell 的跨平台开源 MongoDB 管理工具.嵌入了 JavaScript 引擎和 MongoDB mogo . 只要你会使用 ...