PopupWindow是一个弹出式窗口,它可以展示任意View。他会浮在当前窗口的上方展示。

下面看代码:

public class MyActivity extends Activity

{

private PopupWindow menu;

private LayoutInflater inflater;

private View layout;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//实例化PopupWindow创建菜单

initMenu();

}

//判断按键 菜单的显示与隐藏

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if(!menu.isShowing()&&keyCode == KeyEvent.KEYCODE_MENU){

show();

}else{

menu.dismiss();

}

if(keyCode == KeyEvent.KEYCODE_BACK&&menu.isShowing()){

menu.dismiss();

}

return true;

}

//实例化PopupWindow创建菜单

private void initMenu(){

//获取LayoutInflater实例

inflater  = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);

//获取弹出菜单的布局

layout = inflater.inflate(R.layout.menu,null);

//设置popupWindow的布局

menu = new PopupWindow(layout, WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT);

}

//显示菜单

private void show(){

//设置位置

menu.showAtLocation(this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,0,0); //设置在屏幕中的显示位置

}

}

复制代码

菜单的布局文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="horizontal"

>

<ImageView

android:id="@+id/icon_1"

android:background="@drawable/icon_1"

android:layout_width="40dp"

android:layout_height="40dp"/>

<ImageView

android:id="@+id/icon_2"

android:background="@drawable/icon_2"

android:layout_width="40dp"

android:layout_height="40dp"/>

<ImageView

android:id="@+id/icon_3"

android:background="@drawable/icon3"

android:layout_width="40dp"

android:layout_height="40dp"/>

<ImageView

android:id="@+id/icon_4"

android:background="@drawable/icon4"

android:layout_width="40dp"

android:layout_height="40dp"/>

</LinearLayout>

复制代码

安卓学习笔记:使用PopupWindow创建简单菜单的更多相关文章

  1. blfs(systemv版本)学习笔记-使用apache创建简单的网页服务器

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! apache项目地址:http://www.linuxfromscratch.org/blfs/view/stable/serv ...

  2. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  3. [转载]SharePoint 2013搜索学习笔记之搜索构架简单概述

    Sharepoint搜索引擎主要由6种组件构成,他们分别是爬网组件,内容处理组件,分析处理组件,索引组件,查询处理组件,搜索管理组件.可以将这6种组件分别部署到Sharepoint场内的多个服务器上, ...

  4. OGG学习笔记03-单向复制简单故障处理

    OGG学习笔记03-单向复制简单故障处理 环境:参考:OGG学习笔记02-单向复制配置实例 实验目的:了解OGG简单故障的基本处理思路. 1. 故障现象 故障现象:启动OGG源端的extract进程, ...

  5. QML学习笔记(六)- 简单计时器和定时器

    做一个简单的qml计时器和定时器,左键触发计时,右键触发定时 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(六)- 简单计时器和定时器 左键点击按钮,触发计时器,中键可以暂停计时,同 ...

  6. InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移

    系列目录 InterSystems Ensemble学习笔记(一) Ensemble介绍及安装InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移 一 ...

  7. 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴

    上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗.按键音效等)则要通过playEffect来播放.本节使用该方法以及之前学 ...

  8. SharpGL学习笔记(十一) 光源创建的综合例子:光源参数可调节的测试场景

    灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(Lo ...

  9. 【opencv学习笔记五】一个简单程序:图像读取与显示

    今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图 ...

随机推荐

  1. acd Convex(求面积)

    Problem Description We have a special convex that all points have the same distance to origin point. ...

  2. eclipse oracle Database Manager plugin oracle数据库连接插件

    在eclipseIDE中开发项目需要经常连接oracle数据库,装一些oracle client 去连接数据库,界面来回切换比较麻烦,所以专门找了一个eclipse插件专门连接oracle,跟大家分享 ...

  3. 【转载】Hybrid APP了解

    原文:http://uikoo9.com/blog/detail/hpp 不错的hybrid app框架:http://www.dcloud.io/case/#group-1 HPP hybirdAp ...

  4. Informatica 常用组件Aggregator之四 创建聚合转换

    在 Mapping Designer 中选择"转换-创建".选择聚合转换. 为聚合输入一个名称,并单击"创建".然后单击"完成". Desi ...

  5. 第四章 四种List实现类的对比总结

    1.ArrayList 非线程安全 基于对象数组 get(int index)不需要遍历数组,速度快: iterator()方法中调用了get(int index),所以速度也快 set(int in ...

  6. C#操作AD及Exchange Server总结(一)

    这篇博客的目的:根据亲身项目经历,总结对AD及Exchange Server的操作,包括新建AD用户,设置密码,为AD用户创建邮箱等. 本文完全原创,转载请说明出处,希望对大家有用. 文档目录: 测试 ...

  7. 在Servlet的init方法中创建线程

    servlet代码如下: package com.weichat.servlet; import java.io.IOException; import javax.servlet.ServletEx ...

  8. vue-cli项目优化,缩短首屏加载时间

    1.大文件定位 我们可以使用webpack可视化插件Webpack Bundle Analyzer 查看工程js文件大小,然后有目的的解决过大的js文件. 安装:npm install --save- ...

  9. Android -- 图片异步上传到PHP服务器

    背景                                                                                           网上很多上传到 ...

  10. 通过page页面与portlet的结合实现报表的局部刷新

    场景:系统已经存在两个报表,报表A与B,A与B之间可以通过省份进行追溯. 如下图:点击 报表[销售数据按区域]中的北京市 追溯到报表[销售数据按省份] 需求:让上面的操作在一个page里面刷新,实现页 ...