android彈窗PopupWindow的簡單使用

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章