首页 > 代码库 > 从零开始学android<popupwindow弹出式窗口.三十四.>

从零开始学android<popupwindow弹出式窗口.三十四.>

popupwindow组件是在点击按钮或进行某项操作后在屏幕上弹出的窗口,并进行UI更新,数据处理等一些操作


常用的方法

1
public PopupWindow(Context context)
构造
创建PopupWindow实例
2
public PopupWindow(View contentView, int width, int height)
构造
创建PopupWindow实例,同时传入弹出窗口的显示宽度和高度
3
public PopupWindow(View contentView, int width, int height, boolean focusable)
构造
创建PopupWindow实例,同时传入弹出窗口的显示宽度和高度以及是否设置焦点
4
public void dismiss()
普通
隐藏窗口
5
public int getHeight()
普通
取得弹出窗口的高度
6
public int getWidth()
普通
取得弹出窗口的宽度
7
public boolean isShowing()
普通
判断窗口是否显示
8
public void setAnimationStyle(int animationStyle)
普通
为弹出窗口设置动画
9
public void setContentView(View contentView)
普通
设置显示组件
10
public void setFocusable(boolean focusable)
普通
设置是否获得焦点
11
public void setHeight(int height)
普通
设置弹出窗口高度
12
public void setWidth(int width)
普通
设置弹出窗口宽度
13
public void setOnDismissListener
(PopupWindow.OnDismissListener onDismissListener)
普通
设置弹出窗口隐藏后的事件监听


分别定义两个xml文件,一个是默认显示的住界面,一个是弹出窗口的界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content">
	<TextView
		android:id="@+id/popinfo"
		android:text="请选择您的当前状态:"	
		android:layout_width="wrap_content"
		android:textSize="20px"
		android:layout_height="wrap_content"/>
	<RadioGroup
		android:id="@+id/changestatus"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:orientation="vertical"
		android:checkedButton="@+id/online">
		<RadioButton
			android:id="@+id/online"
			android:text="在线"/>
		<RadioButton
			android:id="@+id/offline"
			android:text="离线"/>
		<RadioButton
			android:id="@+id/stealth"
			android:text="隐身"/>
	</RadioGroup>
	<Button 
		android:id="@+id/cancel" 
		android:layout_height="wrap_content"
		android:layout_width="wrap_content" 
		android:text="取消" />
</LinearLayout>


<?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">
	<TextView 
		android:id="@+id/statusinfo"
		android:layout_height="wrap_content"
		android:layout_width="fill_parent" 
		android:text="当前用户状态:在线" />
	<Button 
		android:id="@+id/popbut" 
		android:layout_height="wrap_content"
		android:layout_width="fill_parent"
		android:text="状态" /> 
</LinearLayout>


JAVA文件


package com.example.popupwindow;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

	private Button popbut = null; 							// 按钮组件
	private RadioGroup changestatus = null; 				// 单选钮组件
	private TextView statusinfo = null; 					// 文本显示组件
	private Button cancel = null; 							// 按钮组件
	private PopupWindow popWin = null; 						// 弹出窗口
	private View popView = null; 							// 保存弹出窗口布局

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main); 				// 设置布局管理器
		this.popbut = (Button) super.findViewById(R.id.popbut); // 取得组件
		this.statusinfo = (TextView) super.findViewById(R.id.statusinfo); // 取得组件
		this.popbut.setOnClickListener(new OnClickListenerImpl()); // 设置单击事件
	}

	private class OnClickListenerImpl implements OnClickListener {	// 设置监听
		@Override
		public void onClick(View view) {
			LayoutInflater inflater = LayoutInflater
					.from(MainActivity.this);			// 取得LayoutInflater对象
			MainActivity.this.popView = inflater.inflate(
					R.layout.popwindow, null);				// 读取布局管理器
			MainActivity.this.popWin = new PopupWindow(popView, 300, 220,
					true);									// 实例化PopupWindow
			MainActivity.this.changestatus = (RadioGroup) popView
					.findViewById(R.id.changestatus); 		// 取得组件
			MainActivity.this.cancel = (Button) popView
					.findViewById(R.id.cancel); 			// 取得组件
			MainActivity.this.changestatus
					.setOnCheckedChangeListener(
							new OnCheckedChangeListenerImpl());	// 设置监听
			MainActivity.this.cancel
					.setOnClickListener(new OnClickListener() {
						@Override
						public void onClick(View v) {
							MainActivity.this.popWin.dismiss(); // 关闭弹出窗口
						}
					});
			MainActivity.this.popWin.showAtLocation(
					MainActivity.this.popbut, 
					Gravity.CENTER, 0, 0);					// 显示弹出窗口
		}
	}

	private class OnCheckedChangeListenerImpl implements
			OnCheckedChangeListener {						// 选项选中时触发

		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId) {
			RadioButton but = (RadioButton) MainActivity.this.popView
					.findViewById(group.getCheckedRadioButtonId());	// 取得选中组件
			MainActivity.this.statusinfo.setText("当前用户状态:"
					+ but.getText().toString());			// 设置文本
			MainActivity.this.popWin.dismiss(); 		// 关闭弹出窗口
		}

	}
}





android基本控件介绍到这里基本就结束了,后续还会有其他的一些组件,会在用到的时候给大家进行具体的讲解




从零开始学android<popupwindow弹出式窗口.三十四.>