PopupWindow在Android.widget包下,项目中经常会使用到PopupWindow做菜单选项,  PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。

效果图:

MainActivity.java

  1. public class MainActivity extends Activityimplements OnClickListener {
  2.  
  3. private PopupWindowm PopWindow;
  4. private View parentView;
  5. private Context context;
  6. ImageView mImageViewBar;
  7.  
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. requestWindowFeature(Window.FEATURE_NO_TITLE);
  12. setContentView(R.layout.activity_main);
  13. context = this;
  14. initView();
  15. }
  16.  
  17. private void initView() {
  18. // TODOAuto-generated method stub
  19. parentView =getLayoutInflater().inflate(R.layout.activity_main,null);
  20. mImageViewBar =(ImageView) findViewById(R.id.menu);
  21. mImageViewBar.setOnClickListener(this);
  22. showPopupWindow();
  23. }
  24.  
  25. private void showPopupWindow() {
  26. LayoutInflater inflater = (LayoutInflater)context
  27. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  28. View contentView =inflater.inflate(R.layout.popuplayout,null);
  29. mPopWindow = newPopupWindow(contentView);
  30. mPopWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
  31. mPopWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
  32. mPopWindow = newPopupWindow();
  33. // 设置SelectPicPopupWindow的View
  34. mPopWindow.setContentView(contentView);
  35. // 设置SelectPicPopupWindow弹出窗体的宽
  36. mPopWindow.setWidth(LayoutParams.WRAP_CONTENT);
  37. // 设置SelectPicPopupWindow弹出窗体的高
  38. mPopWindow.setHeight(LayoutParams.WRAP_CONTENT);
  39. // 设置SelectPicPopupWindow弹出窗体可点击
  40. mPopWindow.setFocusable(true);
  41. mPopWindow.setOutsideTouchable(true);
  42. // 刷新状态
  43. mPopWindow.update();
  44. // 实例化一个ColorDrawable颜色为半透明
  45. ColorDrawable dw = new ColorDrawable(0000000000);
  46. // 点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener,设置其他控件变化等操作
  47. mPopWindow.setBackgroundDrawable(dw);
  48. contentView.findViewById(R.id.memu1).setOnClickListener(this);
  49. contentView.findViewById(R.id.memu2).setOnClickListener(this);
  50. contentView.findViewById(R.id.memu3).setOnClickListener(this);
  51. }
  52.  
  53. @Override
  54. public void onClick(View v) {
  55. int id =v.getId();
  56. switch (id) {
  57. case R.id.menu:
  58. mPopWindow.showAsDropDown(mImageViewBar);
  59. break;
  60. case R.id.memu1: {
  61. Toast.makeText(context,"消息", Toast.LENGTH_SHORT).show();
  62. mPopWindow.dismiss();
  63. }
  64. break;
  65. case R.id.memu2: {
  66. Toast.makeText(context,"收藏", Toast.LENGTH_SHORT).show();
  67. mPopWindow.dismiss();
  68. }
  69. break;
  70. case R.id.memu3: {
  71. Toast.makeText(context,"首页", Toast.LENGTH_SHORT).show();
  72. mPopWindow.dismiss();
  73. }
  74. break;
  75. }
  76. }
  77.  
  78. @Override
  79. protected void onDestroy() {
  80. // TODOAuto-generated method stub
  81. super.onDestroy();
  82. mPopWindow.dismiss();
  83. }
  84. }

源代码下载

android--------Popupwindow的使用的更多相关文章

  1. Android PopupWindow Dialog 关于 is your activity running 崩溃详解

    Android PopupWindow Dialog 关于 is your activity running 崩溃详解 [TOC] 起因 对于 PopupWindow Dialog 需要 Activi ...

  2. Android PopupWindow的使用和分析

    Android PopupWindow的使用和分析 PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activi ...

  3. Android PopupWindow的使用技巧(转)

    Android PopupWindow的使用技巧 PopupWindow是Android上自定义弹出窗口,使用起来很方便. PopupWindow的构造函数为 public PopupWindow(V ...

  4. Android popupwindow使用心得(一)

    最近项目中好多地方用到popupwindow,感觉这个控件还是非常重要的.所以把使用心得总结下,废话不多说,直接上代码. public class MainActivity extends Activ ...

  5. 不得不吐槽的Android PopupWindow的几个痛点(实现带箭头的上下文菜单遇到的坑)

    说到PopupWindow,我个人感觉是又爱又恨,没有深入使用之前总觉得这个东西应该很简单,很好用,但是真正使用PopupWindow实现一些效果的时候总会遇到一些问题,但是即便是人家的api有问题, ...

  6. Android -- PopupWindow(其中嵌套ListView 可以被点击)

    1. 效果图

  7. android PopupWindow使用实例

    注:点空白或菜单外隐藏popupwindow菜单: 但是,若点击有点击事件的组件则要再写代码手动隐藏: @Override public boolean onTouchEvent(MotionEven ...

  8. Android - PopupWindow

    PopupWindow就是一个可以显示在当前界面上的浮动容器,它可以用来显示任意一个View,同时还可以指定显示的位置. 下面写一个显示下拉的例子: PopupWindow mpopupWindow; ...

  9. Android PopupWindow使用之地区、学校选择二级联动

    最近在做一个社交类APP时,希望用户在注册时根据地区来选择自己所在的学校,由于用户手动输入学校,可能会出现各种问题,不利于后面对用户信息的统计.于是决定在客户端做好设置,用户只要根据地区来选择就好.第 ...

  10. android PopupWindow实现从底部弹出或滑出选择菜单或窗口

    本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计.弹出效果主要使用了translate和alpha样式实现,具体实习如下: 第一步:设计弹出窗口xml: &l ...

随机推荐

  1. 数据仓库基础(十)Informatica 组件1

    本文转载自:http://www.cnblogs.com/evencao/p/informatica.html Informatica主要的组件: Source Qualifier 从数据源读取数据 ...

  2. linux基础命令---tr

    tr 删除或者更改文件中的字符串,这个指令一般需要两个字符集. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法       ...

  3. 在thinkphp里面执行原生的sql语句

    在thinkphp里面执行原生的sql语句 怎样在thinkphp里面执行原生的sql语句? $Model = new Model();//或者 $Model = D(); 或者 $Model = M ...

  4. 浅谈CORS

    浅谈CORS CORS全称"跨站资源共享"(Cross-Origin Resource Sharing),它允许浏览器克服浏览器同源策略向跨域服务器发出请求. 同源策略 概念 说到 ...

  5. JavaScript 实现全选 / 反选功能

    JavaScript 实现全选 / 反选功能 版权声明:未经授权,内容严禁转载! 构建主体界面 编写 HTML 代码 和 CSS 代码,设计主题界面 <style> #user { wid ...

  6. 20145302张薇《课程设计》数据恢复——WinHex实践

    20145302张薇<课程设计>数据恢复--WinHex实践 实践内容 使用WinHex破损一个U盘 使用WinHex通过DBR备份数据来修复已损坏U盘 实践详细步骤 1.准备一个文件格式 ...

  7. 20145208 蔡野《网络对抗》Exp3 Advanced 恶意代码伪装技术实践

    20145208 蔡野<网络对抗>Exp3 Advanced 恶意代码伪装技术实践 木马化正常软件 思路: 在正常软件包中将原本的程序主文件(平时打开程序用的exe文件)改成dll后缀(或 ...

  8. CRT中的时间(time_t和tm)(转载)

    转载:http://blog.csdn.net/bokee/article/details/5330682 首先介绍基本的时间概念. 时间一般分为两种,一种是本地时间(Local Time),一种是协 ...

  9. sbt介绍与构建Scala项目

    一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...

  10. Thinking in React 观后感

    原文地址:Thinking in React 今天在翻阅 React 文档,看到一篇名为「Thinking in React」的文章觉得写的很好.文章介绍了如何使用 React 构建一个应用,并不是手 ...