在这里 就简单说一下PoPupWindow的简单使用,
所谓弹窗,就是你在一个界面弹出另外一个界面(弹出的位置,大小自己可定义)。
所以,就绪要准备一个弹窗的试图(弹窗的xml布局),
1,主布局xml(我里边只有一个Button,就不贴了,Butonn事件弹窗)
2, 弹窗的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:background="@android:color/darker_gray"
android:orientation="vertical" >
<Button
android:id="@+id/open"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="one" />
<Button
android:id="@+id/save"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="two" />
<Button
android:id="@+id/close"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="there" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
3,接下来看MainActicity中代码的实现:
<pre name="code" class="html">public class MainActivity 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.button1);
pop.setOnClickListener(popClick);
}
// 点击弹出左侧菜单的显示方式
OnClickListener popClick = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getPopupWindow();
// 这里是位置显示方式,在按钮的左下角
// popupWindow.showAsDropDown(v);
/*
* popupWindow.showAtLocation(findViewById(R.id.button1),
* Gravity.CENTER, 0, 0);
*/
// popupWindow. showAsDropDown(v, -100, -10);
popupWindow.showAtLocation(v, Gravity.BOTTOM, -150, 70);
// 这里可以尝试其它效果方式,如popupWindow.showAsDropDown(v,
// (screenWidth-dialgoWidth)/2, 0);
// popupWindow.showAtLocation(findViewById(R.id.layout),
// Gravity.CENTER, 0, 0);
}
};
/**
* getPopupWindow ()中再去调用initPopuptWindow(). 两个方法都是自己定义的
* 用来创建并且显示PopupWindow的实例
* @param
*/
private void getPopupWindow() {
if (null != popupWindow) {
popupWindow.dismiss();
return;
} else {
initPopuptWindow();
}
}
/**
* 创建PopupWindow
*/
protected void initPopuptWindow() {
// 获取自定义布局文件pop.xml的视图
View popupWindow_view = getLayoutInflater().inflate(R.layout.pop, null,
false);
// 创建PopupWindow实例,200,150分别是宽度和高度
popupWindow = new PopupWindow(popupWindow_view, 300, 600, 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视图里面的控件触发的事件
/**
* popupWindow弹窗中的控件
*/
open.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 这里可以执行相关操作
Toast.makeText(MainActivity.this, "sd", Toast.LENGTH_LONG)
.show();
System.out.println("打开操作");
// 对话框消失
popupWindow.dismiss();
}
});
// 保存
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 这里可以执行相关操作
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实例
*/
}
实例下载 实例Demo下载