- 浏览: 720824 次
文章分类
- 全部博客 (324)
- 图片 (1)
- Javascript (25)
- Android (144)
- css (6)
- intellij (3)
- jquery (9)
- java (29)
- mysql (5)
- grails (1)
- groovy (1)
- Android Eclipse (2)
- linux (12)
- web (5)
- 算法 (2)
- 软件安装 (1)
- dedecms (12)
- centsos (6)
- tomcat (1)
- win 2003 (3)
- 杰奇 (1)
- window (1)
- loadrunner (3)
- QTP (38)
- VBS (33)
- Android 自动化 (12)
- python (3)
最新评论
-
masuweng:
Intellij 中javax.servlet.http.HttpServlet包导不进来 -
臧殿彬:
为什么我在主线程中定义也会出现这个bug?
java.lang.RuntimeException: Can't create handler inside thread that has not cal -
wpp1993:
...
http请求返回并解析json数据 -
javasea:
不错不错
socket阻塞与非阻塞,同步与异步、I/O模型 -
suyuwen1:
Apache2.4.x版wampserver本地php服务器如 ...
WAMPserver配置(允许外部访问、phpmyadmin设置为输入用户名密码才可登录等)
http://www.yoyong.com/archives/613
学习一下PopupWindow的浮层显示效果。
PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等。
为了将PopupWindow的多个功能展现并力求用简单的代码实现,编写了一个点击按钮左侧弹出菜单的功能,实现出现和退出时显示动画效果并点击其他区域时弹出层自动消失,效果图如下:
图-1 android 实现左侧弹出菜单的功能
源码:
1.PopwindowOnLeftActivity.java
- package com.pop.main;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.View.OnTouchListener;
- import android.widget.Button;
- import android.widget.PopupWindow;
- public class PopwindowOnLeftActivity extends Activity {
- // 声明PopupWindow对象的引用
- private PopupWindow popupWindow;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 点击按钮弹出菜单
- Button pop = (Button) findViewById(R.id.popBtn);
- pop.setOnClickListener(popClick);
- }
- //点击弹出左侧菜单的显示方式
- OnClickListener popClick = new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- getPopupWindow();
- // 这里是位置显示方式,在按钮的左下角
- popupWindow.showAsDropDown(v);
- // 这里可以尝试其它效果方式,如popupWindow.showAsDropDown(v,
- // (screenWidth-dialgoWidth)/2, 0);
- // popupWindow.showAtLocation(findViewById(R.id.layout),
- // Gravity.CENTER, 0, 0);
- }
- };
- /**
- * 创建PopupWindow
- */
- protected void initPopuptWindow() {
- // TODO Auto-generated method stub
- // 获取自定义布局文件pop.xml的视图
- View popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,
- false);
- // 创建PopupWindow实例,200,150分别是宽度和高度
- popupWindow = new PopupWindow(popupWindow_view, 200, 150, true);
- // 设置动画效果
- popupWindow.setAnimationStyle(R.style.AnimationFade);
- //点击其他地方消失
- popupWindow_view.setOnTouchListener(new OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- if (popupWindow != null && popupWindow.isShowing()) {
- popupWindow.dismiss();
- popupWindow = null;
- }
- return false;
- }
- });
- // pop.xml视图里面的控件
- Button open = (Button) popupWindow_view.findViewById(R.id.open);
- Button save = (Button) popupWindow_view.findViewById(R.id.save);
- Button close = (Button) popupWindow_view.findViewById(R.id.close);
- // pop.xml视图里面的控件触发的事件
- // 打开
- open.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // 这里可以执行相关操作
- System.out.println("打开操作");
- // 对话框消失
- popupWindow.dismiss();
- }
- });
- // 保存
- save.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // 这里可以执行相关操作
- System.out.println("保存操作");
- popupWindow.dismiss();
- }
- });
- // 关闭
- close.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- // 这里可以执行相关操作
- System.out.println("关闭操作");
- popupWindow.dismiss();
- }
- });
- }
- /***
- * 获取PopupWindow实例
- */
- private void getPopupWindow() {
- if (null != popupWindow) {
- popupWindow.dismiss();
- return;
- } else {
- initPopuptWindow();
- }
- }
- }
主要界面
2.main.xml
- <?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="vertical" >
- <Button android:id="@+id/popBtn"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/pop_left" />
- </LinearLayout>
弹出层的布局
3.pop.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="@android:color/darker_gray">
- <Button android:id="@+id/open"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/btn"
- android:text="@string/open"/>
- <Button android:id="@+id/save"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/btn"
- android:text="@string/save"/>
- <Button android:id="@+id/close"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/btn"
- android:text="@string/close"/>
- </LinearLayout>
value下的style文件
4.style
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <style name="AnimationFade">
- <!-- PopupWindow左右弹出的效果-->
- <item name="android:windowEnterAnimation">@anim/in_lefttoright</item>
- <item name="android:windowExitAnimation">@anim/out_righttoleft</item>
- </style>
- </resources>
value下的string文件
5.string.xml
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="hello">Hello World, PopwindowOnLeftActivity!</string>
- <string name="app_name">PopwindowOnLeft</string>
- <string name="pop_left">弹出左侧菜单</string>
- <string name="open">打开</string>
- <string name="save">保存</string>
- <string name="close">关闭</string>
- </resources>
anim目录下的文件
出现时从左往右的动画文件
6.in_lefttoright.xml
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 定义从左向右进入的动画 -->
- <translate
- android:fromXDelta="-100%"
- android:toXDelta="0"
- android:duration="500"/>
- </set>
退出时从右往左消失的动画
7.out_righttoleft.xml
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 定义从右向左动画退出动画 -->
- <translate
- android:fromXDelta="0"
- android:toXDelta="-100%"
- android:duration="500"/>
- </set>
发表评论
-
将博客搬至CSDN
2014-12-24 22:28 868将博客搬至CSDN -
[Android设计模式]Android退出应用程序终极方法
2014-01-08 16:41 684首先,我们将管理Activity的功能通过一个扩展的Appl ... -
android中activity的四种加载模式
2014-01-08 16:20 948一、何为加载模式 在android的多activit ... -
Android实现数据存储技术
2014-01-08 13:49 892本文介绍Android中的5种数据存储方式。 数据存 ... -
-Android各版本系统源代码下载
2014-01-07 16:39 915原文地址http://blog.csdn.net/wangj ... -
XmlPullParser解析xml文件
2014-01-07 15:55 23978XML解析三种方式 DOM 通用性强,它会将XML文 ... -
ListView实现二级菜单
2014-01-06 18:53 3057实现如上图所示的二级菜单: 1上面是通过两个ListVi ... -
三种方式实现自定义圆形进度条ProgressBar
2014-01-06 16:46 3404一、通过动画实现 定义res/anim/loading.x ... -
android屏幕适配不同的资源图片、布局
2014-01-06 16:35 12101、 资源图片的适配: 在android ... -
获取屏幕分辨率 及 dp 和 像素关系
2014-01-06 16:24 1823DisplayMetrics metric = new Di ... -
Android用Application设置全局变量以及使用
2014-01-03 16:44 821如果想在整个应用中使用全局变量,在java中一般是使用静态变 ... -
Android SDK各版本源码
2013-06-07 20:47 1445http://repository.grepcode.com ... -
在android系统中增加预编译apk(use BUILD_PREBUILT instead!. Stop)
2013-06-05 22:55 104231,在commom.mk(build/target/prod ... -
android out目录结构
2013-06-02 14:37 1527Android编译完成后,将 ... -
Android OpenGL ES 开发教程 从入门到精通
2013-05-25 09:17 1072Android OpenGL ES 简明开发教程 An ... -
自定义ContentProvider
2013-05-20 19:10 1517自定义ContentProvider,根据不同的条件查询不同 ... -
Broadcast Receiver(广播接收器)
2013-05-19 23:11 1102Braodcast Receiver顾名思义就是广播接收器, ... -
Android Service生命周期及用法!
2013-05-19 22:22 1094来自:http://blog.csdn.net/andro ... -
Androdi Droid Fu介绍
2013-05-19 10:01 1227Droid-Fu是啥 Droid ... -
自定义dialog 含listview(二)
2013-05-16 12:13 2289弹出一个半透明的listview dialog: publ ...
相关推荐
在这个"android popwindow实现左侧弹出菜单层 .zip"中,我们将重点探讨如何利用`PopupWindow`来创建一个从屏幕左侧滑出的菜单。 首先,`PopupWindow`的创建需要三个基本元素:一个视图(View)、宽度和高度。视图...
在这个场景中,我们讨论的是如何实现一个从左侧弹出的菜单层,并利用PopupWindow的主要方法。 首先,要创建一个PopupWindow,你需要自定义一个View,这通常是通过`LayoutInflater`来完成的。`LayoutInflater`可以从...
在本项目中,我们将探讨如何将`PopWindow`与`Fragment`相结合,实现在按钮点击时从左侧弹出下拉菜单,并通过选择菜单项来切换界面。以下是关于`PopWindow`、`Fragment`以及它们结合使用的详细知识点。 1. **...
以上就是使用PopupWindow在Android中实现右侧、左侧和底部弹出菜单的基本流程。通过自定义布局、动画和交互,你可以创建出符合应用风格的个性化菜单。记得在实际开发中根据具体需求进行调整,确保弹出菜单的易用性和...
在Android开发中,PopupWindow是一个非常实用的组件,它能够以弹出窗口的形式展示内容,类似于iOS中的ActionSheet。在各种交互设计中,比如底部菜单、下拉选择、提示信息等,我们都能看到PopupWindow的身影。本文将...
总之,`PopupWindow`是Android开发中实现各种弹出菜单和提示的利器,通过结合布局设计、事件处理和动画效果,我们可以创造出丰富的用户体验。对于右键菜单,关键在于正确配置`PopupWindow`的视图、位置以及动画,...
在Android开发中,PopupWindow是一种常用的轻量级组件,它可以在屏幕任意位置弹出一个窗口,通常用于实现快捷菜单、下拉列表等效果。在本示例中,我们将探讨如何利用PopupWindow模仿iOS中的底部弹窗列表,为用户提供...
在Android开发中,`PopupWindow` 是一个非常实用的组件,它可以用来创建各种自定义的弹出式对话框。在本文中,我们将深入探讨 `PopupWindow` 的两种常见实现方法,以及它们的特点和使用场景。 首先,理解 `...
`PopupWindow`是Android系统提供的一个类,它可以创建一个可弹出的窗口,通常用于创建下拉菜单、提示信息或悬浮视图。与对话框不同,`PopupWindow`可以自由地定位在屏幕上的任何位置,并且可以根据需要设置背景透明...
在实现侧滑菜单时,PopWindow可以作为菜单项的弹出窗口,用户点击菜单项后,PopWindow会从菜单位置弹出,展示更多的操作选项。资源中包含的图片文件可能展示了PopWindow在实际应用中的样式和效果。 Fragment是...
在Android开发中,PopupWindow是一个非常实用的组件,它能够以弹出窗口的形式展示内容,类似于iOS中的AlertController或者ActionSheet。本篇文章将深入探讨如何实现Android PopupWindow的各种常见显示位置效果,为你...
本示例程序"Android PopupWindow 示例程序一"着重展示了如何创建并控制PopupWindow使其弹出在指定控件的下方,提供了一个完整的实现过程,包括代码注释和内部控件的监听处理。 首先,了解PopupWindow的基本概念。...
PopWindow是Android中的另一种UI组件,它可以弹出一个浮动窗口,类似于Toast但更加灵活,可以包含复杂的视图结构。PopWindow常用于创建临时提示或快速操作,结合下拉抽屉式控件,可以在用户触发特定操作时提供附加...
在Android开发中,`PopupWindow`是一个非常实用的组件,常用于实现各种弹出窗口的效果,比如下拉菜单、提示信息等。在这个“popwindow案例”中,我们将深入探讨如何创建一个显示在屏幕右侧且背景半透明的`...
PopupWindow是Android系统提供的一种轻量级的弹窗组件,它相比AlertDialog更加灵活,可以自定义显示的内容和样式,常用于实现二级菜单、下拉选择框等效果。本篇文章将深入探讨PopupWindow的使用方法、核心特性以及...