彈出窗口兩種方法_第1頁
彈出窗口兩種方法_第2頁
彈出窗口兩種方法_第3頁
彈出窗口兩種方法_第4頁
彈出窗口兩種方法_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、先貼上最常見的方法,主要講activity的方法。一、彈出PopupWindow 1 /* 2 * 彈出menu菜單 3 */ 4 public void menu_press() 5 if(!menu_display) 6 /獲取LayoutInflater實例 7 inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); 8 /這里的main布局是在inflate中加入的哦,以前都是直接this.setContentView()的吧?呵呵 9 /該方法返回的是一個View的對象,是布局中的根10 l

2、ayout = inflater.inflate(R.layout.main_menu, null);11 12 /下面我們要考慮了,我怎樣將我的layout加入到PopupWindow中呢?很簡單13 menuWindow = new PopupWindow(layout,LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); /后兩個參數(shù)是width和height14 /menuWindow.showAsDropDown(layout); /設(shè)置彈出效果15 /menuWindow.showAsDropDown(null, 0, layo

3、ut.getHeight();16 17 /設(shè)置如下四條信息,當點擊其他區(qū)域使其隱藏,要在show之前配置18 menuWindow.setFocusable(true);19 menuWindow.setOutsideTouchable(true);20 menuWindow.update();21 menuWindow.setBackgroundDrawable(new BitmapDrawable();22 23 mClose = (LinearLayout)layout.findViewById(R.id.menu_close);24 menuWindow.showAtLocation

4、(this.findViewById(R.id.schoolmain), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0,50); /設(shè)置layout在PopupWindow中顯示的位置25 /如何獲取我們main中的控件呢?也很簡單26 mMainbtn = (LinearLayout)layout.findViewById(R.id.menu_main_btn);27 mHistorybtn = (LinearLayout) layout.findViewById(R.id.menu_history_btn);28 mHelpbtn = (Linea

5、rLayout) layout.findViewById(R.id.menu_help_btn);29 30 31 32 /下面對每一個Layout進行單擊事件的注冊吧。33 /比如單擊某個MenuItem的時候,他的背景色改變34 /事先準備好一些背景圖片或者顏色35 mMainbtn.setOnClickListener (new View.OnClickListener() 36 Override37 public void onClick(View arg0) 38 mywebView.loadUrl(URL);39 menuWindow.dismiss(); /響應(yīng)點擊事件之后關(guān)閉M

6、enu40 41 );42 mHelpbtn.setOnClickListener (new View.OnClickListener() 43 Override44 public void onClick(View arg0) 45 mywebView.loadUrl(URL);46 menuWindow.dismiss(); /響應(yīng)點擊事件47 48 );49 mHistorybtn.setOnClickListener (new View.OnClickListener() 50 Override51 public void onClick(View arg0) 52 mywebView

7、.loadUrl(URL);53 menuWindow.dismiss(); /響應(yīng)點擊事件54 55 ); 56 menu_display = true; 57 else58 /如果當前已經(jīng)為顯示狀態(tài),則隱藏起來59 menuWindow.dismiss();60 menu_display = false;61 62 63 64 65 public void back_press()66 67 if(menu_display) /如果 Menu已經(jīng)打開 ,先關(guān)閉Menu68 menuWindow.dismiss();69 menu_display = false;70 71 else 72

8、Intent intent = new Intent();73 intent.setClass(MainActivity.this,Exit.class);74 startActivity(intent);75 76 這種方法很簡單,要注意的是如果要想點擊其他地方使其隱藏,要在show設(shè)置四條屬性如下:                        

9、0;       / 使其聚焦                                 mPopupWindow.setFocusable(true);      

10、0;                          / 設(shè)置允許在外點擊消失                       &#

11、160;         mPopupWindow.setOutsideTouchable(true);                                 /刷新狀態(tài)   &#

12、160;                              mPopupWindow.update();                 &#

13、160;                                                 /點back鍵和其他地方

14、使其消失,設(shè)置了這個才能觸發(fā)OnDismisslistener ,設(shè)置其他控件變化等操作                                mPopupWindow.setBackgroundDrawable(new BitmapDrawable();二、Activity做偽彈

15、窗本人感覺這個很先進啊。恕我冒犯,我只這里直接寫上牛人的代碼。此牛人寫的是防微信的demo。做的相當好,我在后面附上CSDN免費下載鏈接。先貼上java代碼Exit.java 1 package cn.buaa.myweixin; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.MotionEvent; 6 import android.view.View; 7 import android.view.View.OnClickListener; 8 import android

16、.widget.LinearLayout; 9 import android.widget.Toast;10 11 public class Exit extends Activity 12 13 private LinearLayout layout;14 Override15 protected void onCreate(Bundle savedInstanceState) 16 super.onCreate(savedInstanceState);17 setContentView(R.layout.exit_dialog);18 layout=(LinearLayout)findVi

17、ewById(R.id.exit_layout);19 layout.setOnClickListener(new OnClickListener() 20 21 Override22 public void onClick(View v) 23 / TODO Auto-generated method stub24 Toast.makeText(getApplicationContext(), "提示:點擊窗口外部關(guān)閉窗口!", 25 Toast.LENGTH_SHORT).show(); 26 27 );28 29 30 Override31 public boolea

18、n onTouchEvent(MotionEvent event)32 finish();33 return true;34 35 36 public void exitbutton1(View v) 37 this.finish(); 38 39 public void exitbutton0(View v) 40 this.finish();41 MainWeixin.instance.finish();/關(guān)閉Main 這個Activity42 43 附上布局文件:exit_dialog.xmlView Code 1 <?xml version="1.0" enc

19、oding="UTF-8"?> 2 <LinearLayout xmlns:android=" 3 android:id="+id/exit_layout" 4 android:layout_width="280dp" 5 android:layout_height="wrap_content" 6 android:gravity="center_horizontal" 7 android:orientation="vertical" 8 android

20、:background="drawable/confirm_dialog_bg2" > 9 10 <TextView11 android:layout_width="wrap_content"12 android:layout_height="wrap_content"13 android:layout_marginTop="4dp"14 android:padding="5dp"15 android:textColor="#333"16 android:text

21、Size="20sp"17 android:text="退出微信" />18 19 <TextView20 android:layout_width="wrap_content"21 android:layout_height="wrap_content"22 android:textColor="#333"23 android:layout_marginTop="1dp"24 android:padding="10dp"25 android:

22、textSize="16sp"26 android:gravity="center_horizontal"27 android:text="退出后,你將收不到新的消n息.確定要退出?" /> 28 29 30 <LinearLayout31 android:layout_width="wrap_content"32 android:layout_height="wrap_content" 33 android:layout_marginTop="33dp"34 a

23、ndroid:layout_marginBottom="8dp"35 >36 37 <Button38 android:id="+id/exitBtn0"39 android:layout_width="110dp"40 android:layout_height="wrap_content"41 android:text="是"42 android:textSize="16sp"43 android:textColor="#fff"44 an

24、droid:background="drawable/btn_style_green"45 android:gravity="center"46 android:onClick="exitbutton0"47 />48 49 <Button50 android:id="+id/exitBtn1"51 android:layout_width="110dp"52 android:layout_height="wrap_content"53 android:layou

25、t_marginLeft="10dp"54 android:text="否"55 android:textSize="16sp"56 android:textColor="#333"57 android:background="drawable/btn_style_white"58 android:gravity="center"59 android:onClick="exitbutton1"60 />61 </LinearLayout>

26、62 63 </LinearLayout> 分析,彈出exit這個框很簡單,本身就是activity,在主界面用startavtivity等方法像普通activity啟動。關(guān)鍵是如何做到點擊其他地方退出和如何關(guān)閉程序。1、點擊其他地方退出,只要監(jiān)聽OnClickListener讓所有的點擊都退出就行了(除了xml中指定按鈕事件之外)。2、退出主程序。只要在出程序中將主程序自己設(shè)置成靜態(tài)對象,在外部調(diào)用即可 public static MainWeixin instance=null;上面的布局和activity并不能將activity的窗體展現(xiàn)在主界面之上,看起來像個彈出

27、框。下面是彈出框的styles配置: 1 <style name="MyDialogStyle"> 2 <item name="android:windowBackground">android:color/transparent</item> 3 <item name="android:windowFrame">null</item> 4 <item name="android:windowNoTitle">true</item> 5 <item name="android:windowIsFloating">true</item> 6 <item name="android:windowIsTranslucent">true</item> 7 <item name="android:windowContentOverlay">null</item> 8 <item name=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論