文档章节

android抽屉实现

晨曦之光
 晨曦之光
发布于 2012/03/20 18:51
字数 476
阅读 1661
收藏 2
点赞 0
评论 0

           今天在手机上实现了抽屉效果,其实很简单,但是效果却很酷。

           首先在layout 下设置xml布局文件

       

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <SlidingDrawer
        android:id="@+id/sliding"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:content="@+id/allApps"
        android:handle="@+id/imageViewIcon"
        android:orientation="vertical" >

        <GridView
            android:id="@+id/allApps"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/bk"
            android:columnWidth="60dp"
            android:gravity="center"
            android:horizontalSpacing="10dp"
            android:numColumns="auto_fit"
            android:padding="10dp"
            android:stretchMode="columnWidth"
            android:verticalSpacing="10dp" />

        <ImageView
            android:id="@+id/imageViewIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/touch_handler" />
    </SlidingDrawer>

</RelativeLayout>

        SlidingDrawer就是重要的抽屉控件 ,handle是抽屉的拖动按钮,content是抽屉中的内容。

      然后建立 chouti的activity类:

import android.app.Activity;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SlidingDrawer;

public class Chouti extends Activity {
	private GridView gv;
	private SlidingDrawer sd;
	private ImageView iv;
	private List<ResolveInfo> apps;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.slidingdrawer);
		loadApps();
		gv = (GridView) findViewById(R.id.allApps);
		sd = (SlidingDrawer) findViewById(R.id.sliding);
		iv = (ImageView) findViewById(R.id.imageViewIcon);
		gv.setAdapter(new GridAdapter());
		sd.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener()// 开抽屉
		{
			@Override
			public void onDrawerOpened() {
				iv.setImageResource(R.drawable.touch_handler);// 响应开抽屉事件
																// ,把图片设为向下的
			}
		});
		sd.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() {
			@Override
			public void onDrawerClosed() {
				iv.setImageResource(R.drawable.touch_handler);// 响应关抽屉事件
			}
		});
	}

	private void loadApps() {
		Intent intent = new Intent(Intent.ACTION_MAIN, null);
		intent.addCategory(Intent.CATEGORY_LAUNCHER);

		apps = getPackageManager().queryIntentActivities(intent, 0);
	}

	public class GridAdapter extends BaseAdapter {
		public GridAdapter() {

		}

		public int getCount() {
			// TODO Auto-generated method stub
			return apps.size();
		}

		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return apps.get(position);
		}

		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			ImageView imageView = null;
			if (convertView == null) {
				imageView = new ImageView(Chouti.this);
				imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
				imageView.setLayoutParams(new GridView.LayoutParams(50, 50));
			} else {
				imageView = (ImageView) convertView;
			}

			ResolveInfo ri = apps.get(position);
			imageView.setImageDrawable(ri.activityInfo
					.loadIcon(getPackageManager()));

			return imageView;
		}

	}
}

loadApps方法是得到主界面上的图片和文字。

   然后设置的自定义adapter中去。

    看下运行后效果:

   

     向上滑动imageview按钮后:

  

   

    为了体现更好的效果,可以用两张滑动图片,一张朝上的,一张朝下的。根据监听器做相应的切换。

原文链接: http://blog.csdn.net/wangkuifeng0118/article/details/7229200

本文转载自:http://blog.csdn.net/wangkuifeng0118/article/details/7229200

共有 人打赏支持
晨曦之光
粉丝 371
博文 4426
码字总数 2559
作品 0
深圳
程序员
android.support.v4.widget.DrawerLayout 抽屉效果导航菜单

抽屉效果导航菜单图示 如图所示,抽屉效果的导航菜单不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面左上角的一个按钮点击,菜单就滑出来,而且感觉能放很多东西 概况:实现上图...

刘小米
2014/12/03
0
0
Navigation Drawer详解-Google推出的用来取代Sliding Menu的控件(一

相信Sliding Menu很多人都用过,在Android和iOS的app中,越来越多的开发者都会把自己的菜单界面放在一个列表里,然后让用户通过向右(或者向左)滑动的操作看到应用所有的功能。Google官方的...

科技创造
2014/10/07
0
0
android SlidingDrawer滑动抽屉

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

amigos_wu
2012/06/26
0
0
Android "多方向"抽屉

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

z.net
2013/01/17
0
0
Android SlidingDrawer 滑动抽屉效果

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

墨梅
2014/04/27
0
0
推荐使用的SlidingMenu组件

使用SlidingMenu的时候必须依赖两个组件: ActionBarSherlock: Action Bar是Android 3.0后才开始支持的,ActionBarSherlock是让Action Bar功能支持2.X后的所有平台,而且他会自动的判断是调用...

i_bobby
2013/09/26
0
8
不挤压已有布局的抽屉--左侧/右侧

在工作中需要实现不挤压已有布局的抽屉,拉出来是半屏,又不能挤压已有布局,要直接覆盖。搜了许多时间,最后四个方向采用了三种不同的实现方式,除了"下方"的SlidingDrawer是Android提供之外...

刘遇安
2013/02/18
0
1
谷歌发布 Android P Beta 3,已非常接近正式版

7月3日消息,今天谷歌推送了 Android P Beta 3,并表示,这是今年 Android P 开发者预览版的里程碑版本。由于开发者 API 已在上一次更新中完成,因此 Beta 3 现在非常接近将在今年夏天晚些时...

局长
07/03
0
14
当webview遇到了Slidingmenu,webView出现卡白,解决方案

Sliding Menu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作。如Evernote、Google+、Foursquare等诸多优秀应用都采用了这种界面方案。效...

来自猩猩的茶
2013/11/04
0
6
Android开发之学习官方文档Navigation Drawer记录

Creating a Navigation Drawer PreviousNext This lesson teaches you to: Create a Drawer Layout Initialize the Drawer List Handle Navigation Click Events Listen for Open and Close ......

Angels_安杰
2015/12/10
106
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Elasticsearch学习(7)—— 查询API

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

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

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

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

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

阿元
11分钟前
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操作系...

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

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

雁南飞丶
21分钟前
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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部