您的位置:首页 > 移动开发 > Android开发

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

2014-08-26 10:16 330 查看
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基本控件介绍到这里基本就结束了,后续还会有其他的一些组件,会在用到的时候给大家进行具体的讲解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: