- 浏览: 266356 次
- 性别:
- 来自: 邯郸
文章分类
最新评论
-
sunbird.work:
niub,楼主真是太牛逼了
自定义Toast -
cuixuelei:
谢谢分享学习中
Android Listview表格 -
hilary3113:
kondoh 写道呵呵,看参数名 paramAbsListVi ...
ListView OnScrollListener详解(滑屏分页显示数据) -
kondoh:
呵呵,看参数名 paramAbsListView,就知道是反编 ...
ListView OnScrollListener详解(滑屏分页显示数据) -
ariel791331313:
恩,不错哦
ListView OnScrollListener详解(滑屏分页显示数据)
在做Menu菜单时,系统为我们提供的Menu菜单在实际开发时,并不能满足我们的要求,于是想起来了PopupWindow,SDK API是对样对PopupWindow定义的:A popup window that can be used to display an arbitrary view. The popup windows is a floating container that appears on top of the current activity. 大概意思是这样:这是一个可以显示任意的View的弹出窗口,这个窗口是浮动在当前的Activity上的,
<!--StartFragment -->
下面就用一个小例子来展示下PopupWindow的用法吧!下面就用一个Menu菜单作为例子,我个人比较喜欢用XML文件,所以下面都以XML为主
首先来写Menu菜单的布局 menu_item.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll" android:orientation="vertical" android:background="@drawable/menu_bg" android:layout_width="fill_parent" android:layout_height="wrap_content" android:focusableInTouchMode="true"> <LinearLayout android:id="@+id/item_top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_weight="4"> <LinearLayout android:id="@+id/item1_1" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> <LinearLayout android:id="@+id/item1_2" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> <LinearLayout android:id="@+id/item1_3" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> <LinearLayout android:id="@+id/item1_4" android:background="@drawable/menu_item_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_weight="1"> <ImageView android:id="@+id/imge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="btn1" /> </LinearLayout> </LinearLayout> </LinearLayout>
它的样式只是显示一排,这一拓为四个按钮,为了让例子更加清楚,我把其它的代码都删了
Main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/good"> <GridView android:id="@+id/gridView2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:focusableInTouchMode="true" /> </LinearLayout>
这里的布局不会影响到具体的操作,所以我也没有怎么改。
下面的代码才是关键
package com.hilary.dialog; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.widget.GridView; import android.widget.LinearLayout; import android.widget.PopupWindow; import com.hilary.R; public class PopupWindowActivity extends Activity { public static PopupWindow popupWindow; private LinearLayout linear1_1; private LinearLayout linear1_2; private LinearLayout linear1_3; private LinearLayout linear1_4; View menuView = null; View parent = null; GridView gridView; LinearLayout linear; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.popup_window); initWeight(); initListener(); } private void initWeight() { menuView = PopupWindowActivity.this.getLayoutInflater().inflate( R.layout.menu_list, null); parent = getLayoutInflater().inflate(R.layout.popup_window, null); popupWindow = new PopupWindow(menuView, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, false); /* * 设置此项为true时,会让其这个popupWindow处于焦点,其它控件(除主页面键)都会 * 失去焦点,不可点击 * popupWindow.setFocusable(true); */ /* * 有的人说让下面这两项设计结合可以让PopupWindow失去焦点从而实现点击别的控件时, * PopupWindow会消失,这样虽然是可以实现这样的效果,但有一点不足之处就是,这样他 * 会重构你点击那项的背景,当你与点击selector并用时,就是产生你点击那项,它的内 * 容会消失(在你重写按钮背景时),也许是因为那项的背景重构的事吧。。所以大家千万不要这样做 * * popupWindow.setOutsideTouchable(true); * popupWindow.setBackgroundDrawable(new BitmapDrawable()); * */ popupWindow.setAnimationStyle(R.style.MenuAnimation); /* gridView = (GridView) findViewById(R.id.gridView); linear1_1 = (LinearLayout) menuView.findViewById(R.id.item1_1); linear1_2 = (LinearLayout) menuView.findViewById(R.id.item1_2); linear1_3 = (LinearLayout) menuView.findViewById(R.id.item1_3); linear1_4 = (LinearLayout) menuView.findViewById(R.id.item1_4); } private void initListener() { linear1_1.setOnClickListener(new ClickEvent()); linear1_2.setOnClickListener(new ClickEvent()); linear1_3.setOnClickListener(new ClickEvent()); linear1_4.setOnClickListener(new ClickEvent()); gridView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(popupWindow != null && popupWindow.isShowing()){ _setDismiss(); } return false; } }); } public void getPopupWindow() { if (popupWindow == null) { _showingPopupWindw(); } else { if (popupWindow.isShowing()) { _setDismiss(); } else { _showingPopupWindw(); } } } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { if (popupWindow != null) { if (popupWindow.isShowing()) { _setDismiss(); } else { getPopupWindow(); } } else { getPopupWindow(); } } else if (keyCode == KeyEvent.KEYCODE_BACK) { if(popupWindow != null && popupWindow.isShowing()){ _setDismiss(); }else{ System.exit(0); } } return false; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { System.out.println("onKeyDown"); return false; } private class ClickEvent implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn1: getPopupWindow(); break; case R.id.btn2: getPopupWindow(); break; case R.id.item1_1: System.out.println("item1_1"); break; case R.id.item1_2: System.out.println("item1_2"); break; case R.id.item1_3: System.out.println("item1_3"); break; case R.id.item1_4: System.out.println("item1_4"); break; } popupWindow.dismiss(); } } public void _setDismiss() { popupWindow.dismiss(); } public void _showingPopupWindw(){ popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0); } }
在我们用PopupWindow时,都会与某种布局结合应用,如我上面的应用,UC上的应用是与WebView应用,所以在点击外面时,PopupWindow消失,要在WebView上添加Touch监听事件,如果在整个布局上添加Touch是不成效的
发表评论
-
ObjectAnimator Property
2015-07-24 17:21 686The property animation system ... -
android 手机连接mac电脑
2015-05-19 14:41 631一些国产的android手机在mac电脑adb无法识别,即使 ... -
android studio 导入Jar包源码
2015-03-25 15:30 1781android studio导入jar包源码: 切换Ta ... -
Mac版 Android studio 快捷键(Keymap-Eclise Mac OS X)
2015-03-19 11:08 2024打开自动生成方法选择界面: command + N 全局搜 ... -
handlebars
2014-07-08 10:29 803最近一直在弄WebView,为了节省流量使用了模板块,模板存 ... -
Android IO
2014-07-08 10:01 650自从google IO 大会以后一直在想办法下载Androi ... -
Getting “411 Length Required” after a PUT request from HTTP Client
2014-06-13 14:48 3619在使用PUT发送请求时,代码逻辑是根据消息体的长度设置的,当 ... -
android内存分配(android:largeHeap)
2013-01-09 15:32 28302每个程序都很大的内 ... -
mac 上配置svn服务
2012-10-16 11:04 3210刚接手mac,闲来没事从 ... -
扩大View的点击范围
2012-09-07 15:57 1929扩大View的点击范围本人知道的有两种方法,在不影响界面效果的 ... -
App 开发者,求求你们别 push 了!
2012-09-02 09:41 1011北京时间8月21日消息,国外媒体周一刊登评论文章称,对于 ... -
Conversion to Dalvik format failed with error 2
2012-07-26 15:51 2643Conversion to Dalvik format fai ... -
ExpandableListView 无法加载列表数据(adapter不能正常加载数据)
2012-04-17 10:50 1855在使用ExpandableListView时,发现Adapte ... -
Manifest.permission
2012-03-22 12:55 0Android程序在运行时,需要一些权限,这些权限需要在Man ... -
Android 内存溢出(Out Of Memory)的总结
2012-03-13 14:19 5585在做的程序老是内存 ... -
GestureDetector 与 SimpleOnGestureListener应用
2011-12-28 14:09 6042GestureDetector 是android中手势应用类, ... -
ListView取消点击事件
2011-12-16 14:37 2915Listview的每个item点击的时候都会有点击的蓝 ... -
android include使用
2011-12-08 10:23 23510需要包含的xml文件,我这里就放了一个Button按钮: ... -
打包混淆时报:Conversion to Dalvik format failed with error 1
2011-11-24 18:42 2211在Android程序打包混淆时,遇到这个很郁闷的错误: ... -
Android 内存泄漏调试(转)
2011-11-22 16:55 1251一、概述 1二、Android(Java)中常见的容易引起内存 ...
相关推荐
这篇博客《PopUpWindow使用详解(一)——基本使用》及其源码,旨在帮助开发者更好地理解和运用PopupWindow。 首先,PopupWindow的基本概念是关键。它并非一个真正的Android View,而是一个可以显示View的类。通过...
本压缩包文件“BLOG_2”提供了《PopUpWindow使用详解(二)——进阶及答疑》这篇博客的源码,旨在帮助开发者深入理解和实践`PopupWindow`的高级用法以及解决实际开发中遇到的问题。 `PopupWindow`是Android SDK中的一...
本篇文章将详细介绍如何在Android应用中使用PopupWindow,并通过一个具体的案例来演示其基本用法。 首先,PopupWindow是Android SDK提供的一种轻量级的弹窗组件,相比Dialog,它的创建和显示更加灵活。PopupWindow...
下面将详细介绍`PopupWindow`的使用方法及其相关知识点。 首先,`PopupWindow`的创建需要三个基本元素:一个View(内容视图)、一个宽度和一个高度。通常,内容视图是自定义布局,包含了你想要在弹出窗口中展示的...
在“PopupWindow使用,弹出菜单窗口”的主题中,我们可以学习如何利用PopupWindow实现自定义菜单,同时结合图片展示,提升用户体验。通过不断的实践和优化,我们可以将PopupWindow应用到更多的场景,创造出更多样化...
**PopupWindow使用场景** 1. **快速菜单**: 当用户长按某个控件时,显示一个包含多个选项的PopupWindow。 2. **下拉选择器**: 如日期选择、颜色选择等,用户点击后显示一个可滚动的选择列表。 3. **浮动提示**: ...
本教程将深入探讨PopupWindow的基本使用,并结合ListView展示其实战应用。 首先,我们需要理解PopupWindow的三个核心属性:宽度、高度和背景。在创建PopupWindow时,我们可以指定其尺寸,比如设置为WRAP_CONTENT...
在标题"popupWindow使用Demo"中,我们关注的是如何利用PopupWindow实现类似于微信中点击右上角加号后弹出添加好友列表的功能,以及在底部弹出的PopupWindow效果。 首先,我们来理解PopupWindow的基本用法。...
在使用PopupWindow时,首先需要创建一个布局文件来定义弹出窗口的内容。这个布局文件可以包含任何你想要显示的View,例如按钮、文本、图片等。然后通过LayoutInflater的inflate方法将布局加载到内存中。 接下来,...
本文将深入解析Android PopupWindow的使用方法及其在不同场景下的应用。 首先,PopupWindow的基本用法分为三个主要步骤: 1. 创建PopupWindow对象实例。这通常通过传入一个View对象来实现,这个View将作为...
本文将详细介绍如何在Android项目中使用PopupWindow。 首先,了解PopupWindow的基本概念。PopupWindow是Android SDK提供的一个类,它可以创建浮动窗口,并且可以在屏幕上的任意位置显示。它不是Activity的一部分,...
在本案例中,我们将深入探讨PopupWindow的使用方法,特别是如何控制其显示位置以及如何构建一个简单的下拉列表。 首先,PopupWindow的核心类`PopupWindow`需要被实例化,传入一个View作为其内容视图。这个View可以...
在项目`PopWindowTest`中,你可以找到一个完整的PopupWindow使用示例,包括上述所有步骤。通过运行这个例子,你可以更好地理解PopupWindow的工作原理及其在实际开发中的应用。 总之,Android的PopupWindow是一个...
PopupWindow在Android开发中是一种非常常用的轻量级弹窗组件,它...在实际项目中,不断实践和优化,将使你的PopupWindow使用更加得心应手。在PopupWindowDemo中,你可以找到具体的代码示例,帮助理解并掌握这些知识点。
PopupWindow精确计算要显示位置原理和方法;实现带箭头的上下文菜单遇到的坑;Android7.0 PopupWindow的兼容… 方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以...
下面将详细讲解PopupWindow的使用方法及其相关知识点。 首先,创建PopupWindow的基本步骤如下: 1. **初始化PopupWindow**: 首先需要创建一个PopupWindow实例,传入一个View作为内容视图,以及宽度和高度。例如...
【Android PopupWindow 使用详解】 `PopupWindow` 是 Android SDK 提供的一个非常实用的组件,它允许开发者在应用程序中创建可自定义的浮窗,通常用于显示临时的通知或菜单。在这个实例中,我们将深入理解 `...
这个压缩包"popupwindow弹出框.rar"包含了一些关于PopupWindow使用的示例代码,尽管可能并未全部验证其可用性,但它们可以作为学习和参考的资源。 首先,让我们深入理解PopupWindow的基本概念。PopupWindow是...
Android下拉框PopupWindow使用详解 Android下拉框PopupWindow是一种常用的UI组件,用于在移动应用程序中实现下拉框的功能。下面将详细介绍Android下拉框PopupWindow的使用方法和实现原理。 一、PopupWindow的基本...