当前位置: 首页 > news >正文

Android -- 滑式抽屉SlidingDrawer(非原创)

  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。

 

转载于:https://www.cnblogs.com/SM-t/p/4300810.html

相关文章:

  • 前端不为人知的一面--前端冷知识集锦
  • javascript组件——轮播图
  • hdu 5178 pairs(BC第一题,,方法不止一种,,我用lower_bound那种。。。)
  • eclipse经常卡死
  • 使用视图(带索引)
  • 三边测量法:通过三点坐标和到三点的距离,返回第4点位置
  • PHP大神的十大优良习惯
  • 谈一谈二叉搜索树中序迭代器的关键设计
  • POJ 1984
  • Ubuntu 配置开机启动到字符界面
  • 【监控】天机镜——优土大数据平台应用级别监控利器
  • Webpack - CommonJs AMD 模块打包器
  • 浅谈Swift语法
  • 开通博客园
  • 简谈软件测试
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 0x05 Python数据分析,Anaconda八斩刀
  • CentOS7 安装JDK
  • CSS居中完全指南——构建CSS居中决策树
  • ES6--对象的扩展
  • ES6系列(二)变量的解构赋值
  • exif信息对照
  • Java IO学习笔记一
  • JavaScript设计模式之工厂模式
  • Laravel 实践之路: 数据库迁移与数据填充
  • maven工程打包jar以及java jar命令的classpath使用
  • October CMS - 快速入门 9 Images And Galleries
  • opencv python Meanshift 和 Camshift
  • Otto开发初探——微服务依赖管理新利器
  • Phpstorm怎样批量删除空行?
  • underscore源码剖析之整体架构
  • windows-nginx-https-本地配置
  • 复杂数据处理
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 理解在java “”i=i++;”所发生的事情
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 七牛云假注销小指南
  • 新版博客前端前瞻
  • 字符串匹配基础上
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​用户画像从0到100的构建思路
  • !$boo在php中什么意思,php前戏
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (11)MATLAB PCA+SVM 人脸识别
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (windows2012共享文件夹和防火墙设置
  • (第61天)多租户架构(CDB/PDB)
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)3D模板阴影原理
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)关于pipe()的详细解析
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿