Android开发系列(二十六):使用PopupWindow创建对话框风格的窗口

创建对话框风格的窗口很简单,需要步骤:

1、调用PopupWindow的构造器创建PopupWindow对象

2、调用PopupWindow的showAsDropDown(View v)作为v组件的下拉组件显示出来:或调用PopupWindow的showAtLocation()方法将PopupWindow在指定位置显示出来。

首先,我们创建一个Android项目,然后编辑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:gravity="center_horizontal">
<Button android:id="@+id/bn"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="弹出Popup窗口"
	/>
</LinearLayout>

我们定义了一个按钮,用来打开Popup对话框风格的窗口

然后,我们在主界面编辑java代码:PopupWindowTest.java

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;

public class PopupWindowTest extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 装载R.layout.popup对应的界面布局
		View root = this.getLayoutInflater().inflate(R.layout.popup, null);

		// 创建PopupWindow对象
		final PopupWindow popup = new PopupWindow(root, 280, 360);
		Button button = (Button) findViewById(R.id.bn);
		button.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				// 以下拉方式显示。
				//popup.showAsDropDown(v);
				//将PopupWindow显示在指定位置
				popup.showAtLocation(findViewById(R.id.bn), Gravity.CENTER, 20,
					20);
			}
		});
		// 获取PopupWindow中的关闭按钮。
		root.findViewById(R.id.close).setOnClickListener(
			new View.OnClickListener()
			{
				public void onClick(View v)
				{
					// 关闭PopupWindow
					popup.dismiss(); //负责销毁、隐藏PopupWindow的关键代码
				}
			});
	}
}

我们还写了一个PopupWindow对话框的xml文件:popup.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:gravity="center_horizontal"
	android:background="#B1C9E4"
	>
<ImageView
	android:layout_width="240dp"
	android:layout_height="wrap_content"
	android:src="@drawable/java"
	/>
<Button
	android:id="@+id/close"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="关闭"
	/>
</LinearLayout>

我们来看一下效果:

时间: 2024-12-18 18:27:08

Android开发系列(二十六):使用PopupWindow创建对话框风格的窗口的相关文章

Android开发系列(十六):【Android小游戏成语连连看】第二篇

写的晚了,在分工个Z市高中的一个成绩查询的系统,原系统竟然是用VB写的,我不得不佩服原本写系统的那位哥们真能耐得住. 明天搭建下SVN就等着先发工程款然后开始项目了,想想有工资进账,心里也为我那干瘪的钱包小兴奋了一把. 闲话不多说了,今天我们来分析下这个小游戏的工作原理以及核心代码的解析: 工作原理: "主界面"以及"关卡界面"不多说了,这两个是直接写了xml文件, 然后,我们在"游戏界面"的搭建是: 用java代码动态生成了这个界面,在界面中通

Android开发(二十六)——Application

application package com.lgaoxiao.application; import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.Application; /** * 一个类 用来结束所有后台 activity * * @author Administrator * @see http://java--hhf.iteye.com/blo

Android开发系列(十八):自定义控件样式在drawable文件夹下的XML实现

在Android开发的过程中,我们经常需要对控件的样式做一下改变,可以通过用增加背景图片的方式进行改变,但是背景图片放多了肯定会使得APK文件变的很大. 我们可以用自定义属性shape来实现. shape: gradient   -- 对应颜色渐变. startcolor.endcolor就不多说了. android:angle 是指从哪个角度开始变. solid      --  填充. stroke   --  描边. corners  --  圆角. padding   -- 定义内容离边

Android开发系列(十八):自己定义控件样式在drawable目录下的XML实现

在Android开发的过程中,我们常常须要对控件的样式做一下改变,能够通过用添加背景图片的方式进行改变,可是背景图片放多了肯定会使得APK文件变的非常大. 我们能够用自己定义属性shape来实现. shape: gradient   -- 相应颜色渐变. startcolor.endcolor就不多说了. android:angle 是指从哪个角度開始变. solid      --  填充. stroke   --  描边. corners  --  圆角. padding   -- 定义内容

Android开发(二十五)——Android上传文件至七牛

设置头像: Drawable drawable = new BitmapDrawable(dBitmap); //Drawable drawable = Drawable.createFromPath(path): avator.setBackgroundDrawable(drawable); String filepath = "/sdcard/paiyipai.jpg"; Bitmap bm = BitmapFactory.decodeFile(filepath); //Btima

Android开发系列(十二):获得网络上的图片

获得网络上图片的过程: 获得图片的Url->通过Url连接图片对象->把读到的图片的二进制数据写入内存->返回内存中的数据->显示出来 首先,我们要添加权限 因为我们要访问网络,所以我们要在AndroidManifest.xml文件总添加网络访问权限: <!-- 访问internet权限 --> <uses-permission android:name="android.permission.INTERNET"/> 然后就是设置界面:m

Android学习笔记二十六.跨进程调用Service(AIDL Service)

跨进程调用Service(AIDL Service) 一.AIDL Service 1.什么是AIDL Service? AIDL,即Android Interface Definition Language.是Android用于定义远程接口,AIDL接口定义语言的语法比较简单,这种接口定义语言并不是真正的编程语言,它只是定义两个进程之间的通信接口.AIDL的语法与Java接口很相似,但存在如下几点差异: (1)AIDL定义接口的源代码必须以.aidl结尾; (2)AIDL接口中用到数据类型,除

Android开发(二十九)——layout_weight的含义

首先声明只有在Linearlayout中,该属性才有效.之所以android:layout_weight会引起争议,是因为在设置该属性的同时,设置android:layout_width为wrap_content和match_parent会造成两种截然相反的效果.如下所示: <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android

Android开发系列(十四):ListView用法、对ListView监听的三种方法以及ListView中Adapter的使用方法

一.ArrayAdapter的介绍以及ListView的用法: Adapter是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面.就是用来绑定数据用的. 用一个小例子来介绍一下: public class FriendActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea