文档章节

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

代码会说话
 代码会说话
发布于 2012/03/16 11:13
字数 598
阅读 26830
收藏 17

首先看下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/

 

 



© 著作权归作者所有

共有 人打赏支持
代码会说话
粉丝 183
博文 61
码字总数 58190
作品 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 ...

丁佳辉
2018/06/27
0
0
Android提高第十九篇之"多方向"抽屉

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 在android上要实现类似Launch的抽屉效果,大家一定首先会想起SlidingDrawer。SlidingDrawer是android官方控件之一,本文的主角...

晨曦之光
2012/03/14
137
0
Android "多方向"抽屉

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

鉴客
2011/09/29
9.7K
12
Android SlidingDrawer 滑动抽屉效果

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

墨梅
2014/04/27
0
0
Android setSystemUiVisibility详解

简介 本文主要讲解setSystemUiVisibility方法中的参数各个属性标志对应的用法和实际效果。主要讲解的标志有: SYSTEMUIFLAGLOWPROFILE SYSTEMUIFLAGHIDENAVIGATION SYSTEMUIFLAG_FULLSCREEN ...

丁佳辉
01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CDH5之时钟偏差问题

CDH5之时钟偏差问题 一、介绍 主机时钟偏差的问题,是分布式中各个主机之间存在系统时差,或者和ntp服务器的时间不同步造成的。如果集群之中没有配置ntp服务,那么时钟偏差会非常频繁,如下图...

星汉
9分钟前
0
0
ArrayBlockingQueue 与 LinkedBlockingDeque 的内部实现

区别 类似于ArrayList 与 LinkedList 的区别,ArrayBlockingQueue 与 ArrayList 的内部存储结构为数组;而LinkedBlockingDeque 与 LinkedList 的内存存储结构是一个双向链表的存储(所以两者...

noob_fly
10分钟前
0
0
巨杉数据库中标广州银行影像内容管理平台项目

近期,巨杉数据库中标广州银行影像内容管理平台项目,助推广州银行智慧业务升级。 随着银行在智慧化转型的不断发展,影像、音视频甚至用户生物特征信息等非结构化数据在银行数据管理中的比重...

巨杉数据库
12分钟前
0
0
网络社交如何保护个人隐私?做好这4步

在这个全民社交时代,互联网成为了我们生活最主要的娱乐方式,但也让我们的“一举一动”变得有迹可寻。比如,在微博上发布的动态、评论、定位以及第三方应用的授权等操作,都在不经意间将个人...

ThinkSNS官方帐号
13分钟前
0
0
CentOS 编译安装的软件卸载方法

之前在源码包的位置执行的 make install 现在就是反过来 执行make uninstall 本人微信: 本人QQ:

lwkai
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部