在這裏 就簡單說一下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下載