文档章节

用SlidingDrawer实现类似android状态栏下拉上拉效果!

李海珍
 李海珍
发布于 2012/03/16 11:13
字数 598
阅读 26520
收藏 17
点赞 3
评论 3

首先看下android 的API

Class Overview

SlidingDrawer hides content out of the screen and allows the user to drag a handle to bring the content on screen. SlidingDrawer can be used vertically or horizontally. A special widget composed of two children views: the handle, that the users drags, and the content, attached to the handle and dragged with it. SlidingDrawer should be used as an overlay inside layouts. This means SlidingDrawer should only be used inside of a FrameLayout or a RelativeLayout for instance. The size of the SlidingDrawer defines how much space the content will occupy once slid out so SlidingDrawer should usually use match_parent for both its dimensions. Inside an XML layout, SlidingDrawer must define the id of the handle and of the content:

<SlidingDrawer      
android:id="@+id/drawer"      
android:layout_width="match_parent"      android:layout_height="match_parent"      
android:handle="@+id/handle"      
android:content="@+id/content">     
 <ImageView          
android:id="@id/handle"         
 android:layout_width="88dip"         
 android:layout_height="44dip" />     
 <GridView         
 android:id="@id/content"         
 android:layout_width="match_parent"          android:layout_height="match_parent" /> 
 </SlidingDrawer>

以下部分内容参考来自:http://blog.csdn.net/wangkuifeng0118/article/details/7229200

然后我写的layout如下:

<?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:handle="@+id/handle"
        android:content="@+id/content"
        >
        <ListView 
            android:id="@id/content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
               <ImageView android:id="@id/handle"
            android:src="@drawable/drawer_open"
            android:layout_width="88dip"
            android:layout_height="44dip" 
            android:contentDescription="TODO"/>
    </SlidingDrawer>

</LinearLayout>

整个Activity代码如下 :

package ditouch.client.guilin;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SlidingDrawer;

public class SlidingDrawerActivity extends Activity {

	private SlidingDrawer mDrawer;
	private ImageView mImageView;
	private ListView mListView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.slidedraw_test);

		mDrawer = (SlidingDrawer) findViewById(R.id.slidingdraw);
		mImageView = (ImageView) findViewById(R.id.handle);
		mListView = (ListView) findViewById(R.id.content);

		String[] ids = { "1", "2", "3" };
		String[] titles = { "a", "b", "c" };
		List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		;
		HashMap<String, Object> map = new HashMap<String, Object>();
		for (int i = 0; i < ids.length; i++) {
			map.put("ids", ids[i]);
			map.put("title", titles[i]);
			list.add(map);
		}
		SimpleAdapter adapter = new SimpleAdapter(this, list,
				R.layout.ordered_item, new String[] { "ids", "title" },
				new int[] { R.id.ids, R.id.title });
		mListView.setAdapter(adapter);

		mDrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() {
			@Override
			public void onDrawerOpened() {
				mImageView.setImageResource(R.drawable.drawer_close);
			}
		});
		mDrawer.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() {
			@Override
			public void onDrawerClosed() {
				mImageView.setImageResource(R.drawable.drawer_open);
			}
		});
		

	}

}

大概就是上面 的了。哈哈。

上面内容参考:http://my.oschina.net/chen106106/blog/49041

 

2. 上面的一个重大的问题就是,默认不是上向下拉的。而android的状态栏默认是从上向下拉的。

  你用中文搜索的时候发现得最多的解决方案是:使用Panel

这个类的地址在:

http://code.google.com/p/android-misc-widgets/source/browse/trunk/android-misc-widgets/src/org/miscwidgets/widget/Panel.java

介绍的文章我看到最初来自:http://blog.csdn.net/hellogv/article/details/6789698

然后使用这个类我是我想要的,然后就用英文搜索:Slidingdrawer drop from top  to bottom

第一条根据android的SlidingDrawer改写widget。哈哈,就是我想要的。

http://blog.sephiroth.it/2011/03/29/widget-slidingdrawer-top-to-bottom/

 

 



© 著作权归作者所有

共有 人打赏支持
李海珍
粉丝 184
博文 57
码字总数 57009
作品 0
南宁
后端工程师
加载中

评论(3)

w
wcp126
从来往下拉的效果 方便发个demo吗 79486743@qq.com 谢谢啦
C
Caoshichao
不错,好文章。收藏了。
C
Caoshichao
不错,好文章。收藏了。
Android 上滑上拉菜单SlidingDrawer 不全屏显示的方法

这里来说一个已经被废弃的SlidingDrawer.. 他可以实现上拉,下拉的菜单。 但是有个问题就是上拉以后,是全屏显示的。 首先 写一个布局: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

丁佳辉
06/27
0
0
Android SlidingDrawer 滑动抽屉效果

效果如上图,想必大家已经在很多应用中看到过了,下面来看看用SlidingDrawer 实现滑动抽屉效果 从Android1.5开始,加入了android.widget.SlidingDrawer类 SlidingDrawer控件的一些属性: an...

墨梅
2014/04/27
0
0
android优化中国风应用、完整NBA客户端、动态积分效果、文件传输、小说阅读器等源码

Android精选源码 android拖拽下拉关闭效果源码(http://www.apkbus.com/thread-601590-1-1.html) 一款优雅的中国风Android App源码(http://www.apkbus.com/thread-601591-1-1.html) EasySign......

逆鳞龙
07/11
0
0
Android状态栏实现沉浸式模式

因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。而有些人在没有完全了解清楚沉浸模式到底是什么东西的情况下,就张冠李戴地认为一些系统...

津乐
04/20
0
0
Android "多方向"抽屉

在android上要实现类似Launch的抽屉效果,大家一定首先会想起SlidingDrawer。SlidingDrawer是android官方控件之一,本文的主角不是它,而是民间的控件工具集合~~~android-misc-widgets。and...

z.net
2013/01/17
0
0
android开发常用工具类、高仿客户端、附近厕所、验证码助手、相机图片处理等源码

Android精选源码 android开发过程经常要用的工具类源码(http://www.apkbus.com/thread-599826-1-1.html) Android类似QQ空间个人主页下拉头部放大的布局效果(http://www.apkbus.com/thread-5...

逆鳞龙
05/29
0
0
SwipeRefreshLayout,用最少的代码定制最美的上下拉刷新样式

下拉刷新框架其实有很多,而且质量都比较高。但是在日常开发中,每一款产品都会有一套自己独特的一套刷新样式。相信有很多小伙伴在个性化定制中都或多或少的遇到过麻烦。今天我就给大家推荐一...

codeGoogle
05/18
0
0
android各种效果库

可能是最优雅的切换布局的方法 动态切换布局控件 android 实现画板功能 本例详细分析了一个画板功能的实现过程,并讲述了图像混合和双缓冲技术的基本原理。 有关Activity样式 、状态栏透明、...

掘金官方
2017/12/28
0
0
android SlidingDrawer滑动抽屉

SlidingDrawer(滑动式抽屉)隐藏屏外的内容,并允许用户拖拽一个handle以显示隐藏的内容。可以使用在请求的确认或拒绝位置 SlidingDrawer可以在垂直或者水平使用。它由两个子视图组成:一个...

amigos_wu
2012/06/26
0
0
android 常用第三方插件收藏

1、android-vertical-slide-view : 仿照淘宝和聚美优品,在商品详情页,向上拖动时,可以加载下一页。使用ViewDragHelper,滑动比较流畅。 2、Android-MaterialRefreshLayout :这是一个下拉...

ch10mmt
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Elasticsearch学习(7)—— 查询API

1. ElasticSearchRepository的基本使用 @NoRepositoryBean public interface ElasticsearchRepository<T, ID extends Serializable> extends ElasticsearchCrudRepository<T, ID> { <S exten......

叶枫啦啦
4分钟前
0
0
TextView设置行间距、字体间距

一、设置行间距 1、设置行间距:android:lineSpacingExtra,取值范围:正数、负数和0,正数表示增加相应的大小,负数表示减少相应的大小,0表示无变化 2、设置行间距的倍数:android:lineSpa...

王先森oO
12分钟前
0
0
适配器模式

适配器模式(Adapter):将一个类的接口转换成客户端希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器用于连接两种不同种类的对象,使其毫...

阿元
12分钟前
0
0
CoreText进阶(四)-文字行数限制和显示更多

CoreText进阶(四)-文字行数限制和显示更多 用例和效果 Demo:CoreTextDemo 效果图: 默认的截断标识和自定义的截断标识符效果图  点击查看更多之后的效果图  为了可以设置显示的行数以...

aron1992
14分钟前
0
0
nginx的五种负载算法

nginx的五种负载算法 2017年04月26日 15:01:11 阅读数:1297 1.round robin(默认) 轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。 适用于后台机器性能一致的情况。 挂...

linjin200
16分钟前
0
0
Android RecyclerView快速上手

RecyclerView mainMenu = findViewById(R.id.fragmentMain); mainMenu.setLayoutManager(new GridLayoutManager(getActivity(),4)); mainMenu.setAdapter(new MainAdapter......

燕归南
18分钟前
0
0
RabbitMQ实战:理解消息通信 

应用RabbitMQ的5种队列 一、简单队列 P:消息的生产者 C:消息的消费者 红色:队列 简单队列的生产者和消费者关系一对一 但有时我们的需求,需要一个生产者,对应多个消费者,那就可以采用第...

spinachgit
19分钟前
0
0
Linux的使用技巧:到底要不要会用?[图]

Linux的使用技巧:到底要不要会用?[图] 最近有个项目接近了尾声,要进入到调试测试阶段。这是一个使用Springboot框架为后台程序,mpvue构建的小程序项目。服务器我最终仍旧选择了Linux操作系...

原创小博客
21分钟前
0
0
记elasticdump 备份数据导出导入

版本: elasticsearch 5.5.2 elasticdump 2.2 系统 CentOS7.3 因项目需求 从生产导出一份索引到测试 帮助文档 https://github.com/taskrabbit/elasticsearch-dump?utm_source=dbweekly&utm_m......

雁南飞丶
22分钟前
0
0
saltstack配置目录管理

1.服务端配置 -接着编辑之前的 top.sls 文件 #vim /srv/salt/top.sls //修改为如下 base: 'slaver.test.com': - filedir -新建 filedir.sls 文件 # vim /srv/salt/filedir.sls file-dir: fi......

硅谷课堂
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部