从零开始学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基本控件介绍到这里基本就结束了,后续还会有其他的一些组件,会在用到的时候给大家进行具体的讲解




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值