大家好,我們這一節講的是Android PopupWindow的使用! 在我理解其實PopupWindow其實類似于一個不能動的Widget(僅從顯示效果來說!)
?
它是浮在別的窗口之上的.
?
下面我將給大家做一個簡單的Demo,類似于音樂播放器的Widget的效果,點擊Button的時候出來PopupWindow,首先我們看一下效果圖:
?

?

?
下面是核心代碼:
?
~~~
package com.android.tutor;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.PopupWindow;public class PopupWindowDemo extends Activity implements OnClickListener{ private Button btn; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(this); } @Override public void onClick(View v) { Context mContext = PopupWindowDemo.this; if (v.getId() == R.id.btn) { LayoutInflater mLayoutInflater = (LayoutInflater) mContext .getSystemService(LAYOUT_INFLATER_SERVICE); View music_popunwindwow = mLayoutInflater.inflate( R.layout.music_popwindow, null); PopupWindow mPopupWindow = new PopupWindow(music_popunwindwow, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); mPopupWindow.showAtLocation(findViewById(R.id.main), Gravity.RIGHT|Gravity.BOTTOM, 0, 0); } }}
~~~
需要強調的是這里PopupWindow必須有某個事件觸發才會顯示出來,不然總會抱錯,不信大家可以試試!
?
隨著這個問題的出現,就會同學問了,那么我想初始化讓PopupWindow顯示出來,那怎么辦了,不去寄托于其他點擊事件,
?
在這里我用了定時器Timer來實現這樣的效果,當然這里就要用到Handler了,如果大家不理解的可以返回
### [Android高手進階教程(九)之----Android Handler的使用!!](http://blog.csdn.net/Android_Tutor/archive/2010/05/08/5568806.aspx)看一看,加深了解:
?
下面是核心代碼:
?
~~~
package com.android.tutor;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.PopupWindow;public class PopupWindowDemo extends Activity{ private Handler mHandler = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 1: showPopupWindow(); break; } }; }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //create the timer Timer timer = new Timer(); timer.schedule(new initPopupWindow(), 100); } private class initPopupWindow extends TimerTask{ @Override public void run() { Message message = new Message(); message.what = 1; mHandler.sendMessage(message); } } public void showPopupWindow() { Context mContext = PopupWindowDemo.this; LayoutInflater mLayoutInflater = (LayoutInflater) mContext .getSystemService(LAYOUT_INFLATER_SERVICE); View music_popunwindwow = mLayoutInflater.inflate( R.layout.music_popwindow, null); PopupWindow mPopupWindow = new PopupWindow(music_popunwindwow, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); mPopupWindow.showAtLocation(findViewById(R.id.main), Gravity.CENTER, 0, 0); }}
~~~
?
效果如下圖:
?

?
這樣就可以初始化PopupWindow了,呵呵,這一節的布局文件有點多,如果大家想要源碼的話,留下你們的Email,我會盡快發送給大家的
,今天就到這里,大家有什么不明白的歡迎留言!!!謝謝~
?
要源碼的太多,我快崩潰了,所以上傳了。下載地址: [http://d.download.csdn.net/down/2871531/Android_Tutor](http://d.download.csdn.net/down/2871531/Android_Tutor)
- 前言
- (一)Android常用名令集錦(圖文并茂)!
- (二)Android Launcher抽屜類SlidingDrawer的使用!
- (三)Android 中自定義View的應用.
- (四)Android 中自定義屬性(attr.xml,TypedArray)的使用!
- (五)Android 中LayoutInflater的使用!
- (六)Android 中MenuInflater的使用(布局定義菜單)!
- (七)Android 中Preferences的使用!
- (八)Android Widget開發案例(世界杯倒計時!)
- (九)Android Handler的使用!!!
- (十)Android PopupWindow的使用!!!
- (十一)Android 通用獲取Ip的方法(判斷手機是否聯網的方法)!!!
- (十二)Android 在一個應用中如何啟動另外一個已安裝的應用!!!
- (十三)Android 數據庫SQLiteDatabase的使用!!
- (十四)Android Location的使用!!
- (十五)通過Location獲取Address的使用!
- (十六)Android中萬能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android 中的拿來主義(編譯,反編譯,AXMLPrinter2,smali,baksmali)!
- (十七)Android中Intent傳遞對象的兩種方法(Serializable,Parcelable)!
- (十八)列出Android設備中所有啟動的服務,及判斷某個服務是否開啟!
- (十九)Android開發中,使用線程應該注意的問題!
- (二十)Android與JavaScript方法相互調用!
- (二十一)Android中創建與幾種解析xml的方法!
- (二十二)Android中幾種圖像特效處理的集錦!!
- (二十三)Android中的日歷讀寫操作!!!
- (二十四)Android WebView的緩存!!!
- (二十五)Android 中的AIDL!!!