- 浏览: 229249 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (86)
- Java_基础 (6)
- ubuntu (15)
- 数据结构 (1)
- linux_c (9)
- linux_基础 (5)
- linux_文件I/O (0)
- linux_进程与线程 (0)
- linux_网络编程 (0)
- linux_GUI编程 (0)
- linux_数据库 (0)
- JavaMail (1)
- android_基础 (31)
- android_UI (4)
- android_Graphics (2)
- android_性能 (0)
- android_线程机制 (0)
- android_设计模式 (0)
- android_framework (0)
- android_移植 (0)
- 学习方法 (6)
- 转载 (26)
- 翻译 (0)
- 读书笔记 (10)
- MFC (13)
- C++ (17)
- Oracle (2)
- Objective-C (0)
- IOS (0)
最新评论
-
darkjune:
不错的文章
android/java设置DNS缓存 -
lz_cleaner:
对我太有用了,万分感谢,写的这么详细。
斜率计算:反正切函数 Math.atan() 与 Math.atan2() 的区别 -
Wesley.S:
兄弟,能告诉我 Security 的属性名在哪里查找吗??
android/java设置DNS缓存 -
panhe1992:
请问这个方法安装的ubuntu要如何删除,删除的时候貌似mbr ...
win7下(有隐藏分区)硬盘安装ubuntu
项目中要用到PopupWindow。查了一下用法,并做了一个简单的demo,用于备份。
android中的控件都具有很好的扩展性,这里的PopupWindow中可以放置自定义的view,用法简单而方便。
android中的控件都具有很好的扩展性,这里的PopupWindow中可以放置自定义的view,用法简单而方便。
public class MainActivity extends Activity { static final String TAG = "MainActivity"; private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); private int state, state1; private Button button, button1; private ListView menulist; private View layout; private PopupWindow pop, pop1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 初始化数据List initPopListData(); button = (Button)findViewById(R.id.button); button1 = (Button)findViewById(R.id.button1); button.setOnClickListener(listener); button1.setOnClickListener(listener); } private OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View v) { if ( v.getId() == R.id.button ) { if (state == 1 && pop.isShowing()) { state = 0; pop.dismiss(); } else { // 放置自定义的view layout = MainActivity.this.getLayoutInflater() .inflate(R.layout.pop, null); menulist = (ListView) layout.findViewById(R.id.menulist); SimpleAdapter listAdapter = new SimpleAdapter( MainActivity.this, list, R.layout.menu_item, new String[] { "menuItemName" }, new int[] { R.id.menuitem }); menulist.setAdapter(listAdapter); /** * layout PopupWindow所显示的界面 * myButton.getWidth() 设置PopupWindow宽度 * myButton.getHeight() * 3 + 5 设置PopupWindow宽度高度 */ pop = new PopupWindow( layout, button.getWidth(), button.getHeight() * 3 + 5); // 设置背景 ColorDrawable cd = new ColorDrawable(-0000); pop.setBackgroundDrawable(cd); pop.update(); pop.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); pop.setTouchable(true); // 设置popupwindow可点击 pop.setOutsideTouchable(true); // 设置popupwindow外部可点击 pop.setFocusable(true); //获取焦点 /*设置popupwindow的位置*/ pop.showAtLocation(layout, (Gravity.BOTTOM - button.getHeight()) | Gravity.LEFT, 0, 2 * button.getHeight()); state = 1; pop.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { /* * 如果点击了popupwindow的外部,popupwindow也会消失. * 这是PopupWindow的重要特性 */ if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { pop.dismiss(); return true; } return false; } }); // 点击listview中item的处理 menulist.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { switch (arg2) { case 0: Toast.makeText(getApplicationContext(), "系统设置", Toast.LENGTH_SHORT).show(); pop.dismiss(); break; case 1: Toast.makeText(getApplicationContext(), "自动更新", Toast.LENGTH_SHORT).show(); pop.dismiss(); break; case 2: Toast.makeText(getApplicationContext(), "关于", Toast.LENGTH_SHORT).show(); pop.dismiss(); break; case 3: Toast.makeText(getApplicationContext(), "搜索", Toast.LENGTH_SHORT).show(); pop.dismiss(); break; case 4: Toast.makeText(getApplicationContext(), "退出", Toast.LENGTH_SHORT).show(); pop.dismiss(); break; } } }); } } else if ( v.getId() == R.id.button1) { if (state1 == 1 && pop1.isShowing()) { state1 = 0; pop1.dismiss(); } else { layout = getLayoutInflater().inflate(R.layout.pop1, null); ((ImageView)layout.findViewById(R.id.image)) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "image", Toast.LENGTH_SHORT).show(); pop1.dismiss(); } }); ((ImageView)layout.findViewById(R.id.image1)) .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "image1", Toast.LENGTH_SHORT).show(); pop1.dismiss(); } }); pop1 = new PopupWindow(layout, 150, 80); ColorDrawable cd = new ColorDrawable(Color.RED); pop1.setBackgroundDrawable(cd); pop1.update(); pop1.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); pop1.setTouchable(true); pop1.setOutsideTouchable(true); pop1.setFocusable(true); pop1.showAtLocation(layout, (Gravity.BOTTOM - button.getHeight()) | Gravity.LEFT, 0, 2 * button.getHeight()); state1 = 1; pop1.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { pop1.dismiss(); return true; } return false; } }); } } } }; private void initPopListData() { HashMap<String, String> map = new HashMap<String, String>(); map.put("menuItemName", "系统设置"); list.add(map); map = new HashMap<String, String>(); map.put("menuItemName", "自助更新"); list.add(map); map = new HashMap<String, String>(); map.put("menuItemName", "关于"); list.add(map); map = new HashMap<String, String>(); map.put("menuItemName", "搜索"); list.add(map); map = new HashMap<String, String>(); map.put("menuItemName", "退出"); list.add(map); } }
- PopupWindowTest.rar (81 KB)
- 下载次数: 170
发表评论
-
mac 下 android studio 识别不出真机
2016-10-25 19:10 1527$ system_profiler SPUSBDataTyp ... -
Android:INSTALL_FAILED_UPDATE_INCOMPATIBLE 错误解决方法
2013-04-22 17:20 1777晚上在测一个widget,前面测的好好的,后面再安装的时候发 ... -
android:WebView使用
2012-10-30 22:55 15780如何创建WebView: 1、添加权限:Androi ... -
android:string.xml文件中的整型和string型代替
2012-09-18 12:16 993在android的开发中 ... -
android:自定义长按/长点击事件
2012-08-29 14:14 8841自定义的长按事件。 public class LongP ... -
android:ListView中放置Button导致点击失效
2012-08-13 23:58 2457ListView 和其它能触发点击事件的widg ... -
android:实现双击事件(DoubleClick)
2012-07-31 10:32 11527自己实现的双击事件,以Button为例说明。 publi ... -
Android工程名出现红色感叹号
2012-07-09 16:16 1331如果一个android项目引用过第三方库 ... -
matrix使用:平移
2012-06-21 13:19 2011android绘图中使用的矩阵 ... -
ListView拖动时背景变黑的问题
2012-06-20 17:28 925操作ListView的时候,直接用触摸拖动视图 ... -
android:Button添加图片
2012-06-20 15:52 5545在button上添加图片: <Button ... -
android:本地图片转换为位图
2012-06-20 15:09 1602/** * 将本地图片转换为位图 ... -
android/java设置DNS缓存
2012-06-18 21:44 10580在通过DNS查找域名的过程中,可能会经过多台中间DNS服务器 ... -
android使用尺寸资源
2012-06-17 12:00 23401.在values文件夹下建立名为dimens.xml的文件 ... -
eclipse中统计代码行数
2012-06-05 12:14 906在eclipse中, 打开File Search对话框, ... -
设置 Eclipse 智能提示,大幅度减少 alt+/ 使用频率
2012-06-05 10:06 1013以往 我们往往在输入 ... -
斜率计算:反正切函数 Math.atan() 与 Math.atan2() 的区别
2012-06-04 21:05 16108我们可以使用正切操作 ... -
Drawable, Bitmap和byte[]的转换
2012-06-17 12:00 860android在处理一写图片资源的时候,会进行一些类型的转换 ... -
Android获取设备信息
2011-12-01 11:18 1179android 获取设备型号: import android. ... -
Android 中自定义属性(attr.xml,TypedArray)的使用
2011-11-30 11:08 1581一、 在res/values 文件下定义一个attrs.xml ...
相关推荐
在Android开发中,有时我们需要创建一个浮动窗口来展示一些临时信息或者交互,...通过这个Demo,开发者可以学习到PopupWindow的使用以及如何在其中集成复杂的视图组件,例如ListView,为用户带来更丰富的交互体验。
本篇文章将详细介绍如何在Android应用中使用PopupWindow,并通过一个具体的案例来演示其基本用法。 首先,PopupWindow是Android SDK提供的一种轻量级的弹窗组件,相比Dialog,它的创建和显示更加灵活。PopupWindow...
本文将详细介绍如何在Android应用中使用PopupWindow,包括其基本概念、创建步骤以及常用方法。 首先,PopupWindow是一个可以浮动在Activity之上的窗口,它不依赖于任何布局,可以自由地显示在屏幕的任何位置。通过...
在Android开发中,`PopupWindow` 是一个非常实用的组件,它允许我们创建弹出式窗口,用于显示一些临时信息或者交互操作。本教程将详细讲解如何封装一个通用的`PopupWindow`,以便在项目中复用,降低代码冗余,提高...
通过阅读和学习这个Demo,开发者可以更深入地理解如何在Android应用中创建并使用带有底部灰色背景的PopupWindow。此外,还可以根据项目需求调整PopupWindow的动画效果、透明度等属性,以提供更丰富的用户体验。 总...
在Android开发中,PopupWindow是一种常用的轻量级弹窗组件,用于在屏幕任意位置显示一个浮层视图。本文将详细讲解如何实现标题所描述的功能:“popupwindow弹窗实现点击按钮,下方弹出popwindow,并且只是按钮下方有...
在Android开发中,PopupWindow是一个非常实用的组件,它能够以弹出窗口的形式展示内容,类似于浮动对话框或者下拉菜单。...理解并熟练掌握PopupWindow的使用,对于提升Android应用的用户体验有着重要作用。
本教程将详细讲解如何在Android中使用`PopupWindow`并添加动画效果。 首先,`PopupWindow`的创建需要三个基本参数:一个视图(通常是我们要显示的内容)、宽度和高度。以下是一个简单的创建示例: ```java View ...
本文将详细介绍如何在Android项目中使用PopupWindow。 首先,了解PopupWindow的基本概念。PopupWindow是Android SDK提供的一个类,它可以创建浮动窗口,并且可以在屏幕上的任意位置显示。它不是Activity的一部分,...
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,类似于下拉菜单、提示框或者浮动视图。这个组件在许多场景下都非常有用,例如在主界面之上显示附加信息或者提供附加操作。下面将...
3. **显示PopupWindow**:使用`showAtLocation()`或`showAsDropDown()`方法定位并显示PopupWindow。`showAtLocation()`需要传入一个View作为参照物,以及Gravity参数来确定PopupWindow的位置;`showAsDropDown()`则...
Android下拉框PopupWindow使用详解 Android下拉框PopupWindow是一种常用的UI组件,用于在移动应用程序中实现下拉框的功能。下面将详细介绍Android下拉框PopupWindow的使用方法和实现原理。 一、PopupWindow的基本...
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,为用户提供临时的交互界面,比如模拟系统级的下拉菜单、快捷操作菜单等。本篇将详细介绍如何在Android中利用`PopupWindow`来实现...
本篇将详细讲解如何使用PopupWindow实现一个定制化的下拉框。 首先,理解PopupWindow的基本概念。PopupWindow是Android提供的一种轻量级窗口,可以用来弹出一个浮动视图。它通常用于创建快捷菜单、下拉列表或者其他...
可以使用`View.getLocationOnScreen()`方法获取视图在屏幕上的坐标,然后设置`PopupWindow`的锚点: ```java int[] anchorLocation = new int[2]; triggerButton.getLocationOnScreen(anchorLocation); // 设置...
以上就是Android中PopupWindow的使用方法和相关知识点,理解并熟练运用这些技巧,可以帮助开发者更好地创建动态、丰富的用户界面。在实际开发中,可以根据项目需求灵活调整PopupWindow的行为,提高用户体验。同时,...
在这种情况下,我们可以使用TranslateAnimation,将PopupWindow从底部向上移动到目标位置。创建动画的代码可能如下: ```java TranslateAnimation animation = new TranslateAnimation( Animation.RELATIVE_TO_...
在Android开发中,`PopupWindow` 是一个非常实用的组件,用于创建弹出式窗口,它可以显示在屏幕任意位置,并且可以自定义其内容和样式。本文将详细介绍如何在Android中自定义`PopupWindow`,并实现弹出菜单的效果。 ...
本文将详细介绍如何使用`PopupWindow`在Android应用中模仿微信右上角的弹出菜单效果。 首先,我们需要理解`PopupWindow`的基本用法。`PopupWindow` 是一个可以在屏幕任意位置显示的窗口,它不依附于任何Activity,...