文档章节

android抽屉实现

晨曦之光
 晨曦之光
发布于 2012/03/13 18:25
字数 476
阅读 4844
收藏 6
点赞 1
评论 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

工作笔记

在list的for-each循环中,直接remove会报java.util.ConcurrentModificationException,但是在remove后面加上break就不会报错了 如果不是每次重新组装,提供出去的配置信息必须以深度克隆的方...

lost_keke
8分钟前
0
0
TensorFlow 退化学习率

随着训练次数的增多,开始时学习率较大,可以较快的收敛到最优解附近,之后学习率应该比较小 exponential_decay 设置每隔一定的学习步数就将学习率下降到指定标准 下面是每隔10步,学习率会下...

阿豪boy
9分钟前
0
0
01、centos7安装docker

1、首先在安装之前检查系统内核版本 [root@docker01 ~]# uname -r3.10.0-327.el7.x86_64[root@docker01 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@......

北岩
13分钟前
0
0
iptables filter表 nat表 应用实例

iptables基础实例 iptables -nvL 查看规则 [root@localhost ~]# iptables -nvLChain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source ......

李超小牛子
14分钟前
0
0
什么?你的私钥泄漏了?

代码签名是一种当代标准做法,其中软件开发人员通过可信证书颁发机构的验证,并接收可用于签署脚本和可执行文件的证书和私钥。 几乎每个设备,操作系统和网络浏览器都经过硬编码,以尽可能少...

亚洲诚信
19分钟前
1
0
Iterm2安装Zsh + Oh My Zsh+Solarized

安装Oh My Zsh curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 安装Zsh: 1.安装zsh brew install zsh 2.配置iterm2 sudo vim /etc/shells输入:......

孟飞阳
27分钟前
0
0
缓解ddos攻击的有效解决办法

因为防火墙无法处理所有类型的ddos攻击,下一代防火墙生成内置的DDoS防御,但是无法处理所有类型的攻击。对抗DDoS攻击的最佳做法是有专属的设备或者服务在攻击透过防火墙或者其他的IT基础设施...

上树的熊
27分钟前
0
0
Spark Streaming如何使用checkpoint容错

在互联网场景下,经常会有各种实时的数据处理,这种处理方式也就是流式计算,延迟通常也在毫秒级或者秒级,比较有代表性的几个开源框架,分别是Storm,Spark Streaming和Filnk。 伦理片 http...

刺猬一号
29分钟前
1
0
Xamarin Essentials教程地理定位Geolocation

Xamarin Essentials教程地理定位Geolocation 通过地理定位功能,应用程序可以获取用户的当前地理位置,如经纬度值。利用地理位置,可以在地图上定位,也可以转化物理位置,划分用户的归属地。...

大学霸
42分钟前
0
0
vue 编译警告 Compiled with 4 warnings

There are multiple modules with names that only differ in casing. This can lead to unexpected behavior when compiling on a filesystem with other case-semantic. Use equal casing.......

落雪飞声
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部