亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android PopupWindow 和 Activity彈出窗口實現方式

2020-04-11 12:42:02
字體:
來源:轉載
供稿:網友
本人小菜一個。目前只見過兩種彈出框的實現方式,第一種是最常見的PopupWindow,第二種也就是Activity的方式是前幾天才見識過。感覺很霸氣哦。沒想到,activity也可以做偽窗口。
先貼上最常見的方法,主要講activity的方法。
一、彈出PopupWindow

復制代碼 代碼如下:

/**
* 彈出menu菜單
*/
public void menu_press(){
if(!menu_display){
//獲取LayoutInflater實例
inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
//這里的main布局是在inflate中加入的哦,以前都是直接this.setContentView()的吧?呵呵
//該方法返回的是一個View的對象,是布局中的根
layout = inflater.inflate(R.layout.main_menu, null);
//下面我們要考慮了,我怎樣將我的layout加入到PopupWindow中呢???很簡單
menuWindow = new PopupWindow(layout,LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); //后兩個參數是width和height
//menuWindow.showAsDropDown(layout); //設置彈出效果
//menuWindow.showAsDropDown(null, 0, layout.getHeight());
//設置如下四條信息,當點擊其他區域使其隱藏,要在show之前配置
menuWindow.setFocusable(true);
menuWindow.setOutsideTouchable(true);
menuWindow.update();
menuWindow.setBackgroundDrawable(new BitmapDrawable());
mClose = (LinearLayout)layout.findViewById(R.id.menu_close);
menuWindow.showAtLocation(this.findViewById(R.id.schoolmain), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0,50); //設置layout在PopupWindow中顯示的位置
//如何獲取我們main中的控件呢?也很簡單
mMainbtn = (LinearLayout)layout.findViewById(R.id.menu_main_btn);
mHistorybtn = (LinearLayout) layout.findViewById(R.id.menu_history_btn);
mHelpbtn = (LinearLayout) layout.findViewById(R.id.menu_help_btn);
//下面對每一個Layout進行單擊事件的注冊吧。。。
//比如單擊某個MenuItem的時候,他的背景色改變
//事先準備好一些背景圖片或者顏色
mMainbtn.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick(View arg0) {
mywebView.loadUrl(URL);
menuWindow.dismiss(); //響應點擊事件之后關閉Menu
}
});
mHelpbtn.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick(View arg0) {
mywebView.loadUrl(URL);
menuWindow.dismiss(); //響應點擊事件
}
});
mHistorybtn.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick(View arg0) {
mywebView.loadUrl(URL);
menuWindow.dismiss(); //響應點擊事件
}
});
menu_display = true;
}else{
//如果當前已經為顯示狀態,則隱藏起來
menuWindow.dismiss();
menu_display = false;
}
}
public void back_press(){
if(menu_display){ //如果 Menu已經打開 ,先關閉Menu
menuWindow.dismiss();
menu_display = false;
}
else {
Intent intent = new Intent();
intent.setClass(MainActivity.this,Exit.class);
startActivity(intent);
}
}

這種方法很簡單,要注意的是如果要想點擊其他地方使其隱藏,要在show設置四條屬性如下:
// 使其聚焦
mPopupWindow.setFocusable(true);
// 設置允許在外點擊消失
mPopupWindow.setOutsideTouchable(true);
//刷新狀態
mPopupWindow.update();
//點back鍵和其他地方使其消失,設置了這個才能觸發OnDismisslistener ,設置其他控件變化等操作
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
二、Activity做偽彈窗
 
本人感覺這個很先進啊。恕我冒犯,我只這里直接寫上牛人的代碼。此牛人寫的是防微信的demo。做的相當好,我在后面附上CSDN免費下載鏈接。
先貼上java代碼――Exit.java
package cn.buaa.myweixin;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.Toast;
public class Exit extends Activity {
private LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exit_dialog);
layout=(LinearLayout)findViewById(R.id.exit_layout);
layout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "提示:點擊窗口外部關閉窗口!",
Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event){
finish();
return true;
}
public void exitbutton1(View v) {
this.finish();
}
public void exitbutton0(View v) {
this.finish();
MainWeixin.instance.finish();//關閉Main 這個Activity
}
}
附上布局文件:exit_dialog.xml
復制代碼 代碼如下:

View Code
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/exit_layout"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:background="@drawable/confirm_dialog_bg2" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:padding="5dp"
android:textColor="#333"
android:textSize="20sp"
android:text="退出微信" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#333"
android:layout_marginTop="1dp"
android:padding="10dp"
android:textSize="16sp"
android:gravity="center_horizontal"
android:text="退出后,你將收不到新的消/n息.確定要退出?" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="33dp"
android:layout_marginBottom="8dp"
>
<Button
android:id="@+id/exitBtn0"
android:layout_width="110dp"
android:layout_height="wrap_content"
android:text="是"
android:textSize="16sp"
android:textColor="#fff"
android:background="@drawable/btn_style_green"
android:gravity="center"
android:onClick="exitbutton0"
/>
<Button
android:id="@+id/exitBtn1"
android:layout_width="110dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="否"
android:textSize="16sp"
android:textColor="#333"
android:background="@drawable/btn_style_white"
android:gravity="center"
android:onClick="exitbutton1"
/>
</LinearLayout>
</LinearLayout>

分析,彈出exit這個框很簡單,本身就是activity,在主界面用startavtivity等方法像普通activity啟動。
關鍵是如何做到點擊其他地方退出和如何關閉程序。
、點擊其他地方退出,只要監聽OnClickListener讓所有的點擊都退出就行了(除了xml中指定按鈕事件之外)。
、退出主程序。只要在出程序中將主程序自己設置成靜態對象,在外部調用即可 public static MainWeixin instance=null;
上面的布局和activity并不能將activity的窗體展現在主界面之上,看起來像個彈出框。下面是彈出框的styles配置:
復制代碼 代碼如下:

<style name="MyDialogStyle">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">true</item>
</style>

下面我們來分析一下這個布局的含義及重點:
重點1、<item name="android:windowBackground">@android:color/transparent</item>窗口背景色
重點2、<item name="android:windowFrame">@null</item>Dialog的windowFrame框為無
重點4、<item name="android:windowIsFloating">true</item>是否浮現在activity之上
重點5、<item name="android:windowIsTranslucent">true</item>窗口是否半透明――是(與第一條配合使用)
重點6、<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>窗口彈出效果
重點7、<item name="android:backgroundDimEnabled">true</item> 是否允許背景模糊
重點8、<item name="android:windowContentOverlay">@null</item>這個不設置的話,可能會出現邊框黑線
以上代碼都是牛人們的功勞,我拿來做一分析,給更多需要的朋友。
我在眾多牛人的指引下一步步成長,感謝牛人們。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av一区二区在线| 91久久久久久国产精品| 日韩中文字幕在线免费观看| 色综久久综合桃花网| 91高潮在线观看| 亚洲成人av中文字幕| 亚洲精品永久免费| 欧美成人黑人xx视频免费观看| 精品调教chinesegay| 欧美午夜女人视频在线| 国产日韩欧美夫妻视频在线观看| 神马国产精品影院av| 亚洲福利视频专区| 日韩中文字幕在线| 国产在线播放91| 国产精品白丝jk喷水视频一区| 日韩欧美中文字幕在线观看| 91精品国产综合久久香蕉| 久久理论片午夜琪琪电影网| 欧美激情a∨在线视频播放| 国产精品免费看久久久香蕉| 国产91成人在在线播放| 国产大片精品免费永久看nba| 国产福利精品av综合导导航| 97精品一区二区视频在线观看| 日韩精品久久久久| 欧美在线www| 久久亚洲精品视频| 97av在线播放| 欧美日本国产在线| 美女久久久久久久| 亚洲精品98久久久久久中文字幕| 国产精品第2页| 欧美三级xxx| 97视频免费观看| 国产精品网址在线| 久久6免费高清热精品| 欧美色视频日本高清在线观看| 91精品国产综合久久男男| 国产视频综合在线| 欧美视频在线观看免费| 国产亚洲人成网站在线观看| 一区二区亚洲欧洲国产日韩| 成人国产精品一区二区| 久久视频在线看| zzjj国产精品一区二区| 91高清免费在线观看| 久久久久久久国产精品视频| 日韩免费视频在线观看| 91成人性视频| 欧美黄色www| 不卡伊人av在线播放| 久久精品成人一区二区三区| 久久精品国产亚洲精品2020| 91禁国产网站| 亚洲最大的av网站| 国产精品入口免费视| 久久成人国产精品| 亚洲一区二区在线| 日韩欧美亚洲一二三区| 色妞一区二区三区| 一本色道久久88亚洲综合88| 日韩一区av在线| 九九热99久久久国产盗摄| 97热在线精品视频在线观看| 色婷婷成人综合| 91午夜理伦私人影院| 欧美精品videos性欧美| 国产做受高潮69| 久久99精品久久久久久噜噜| 国产精品免费一区| 综合网日日天干夜夜久久| 亚洲精美色品网站| 欧美性猛交xxxx富婆| 国产成人精品免高潮在线观看| 久久久精品影院| 日韩精品免费电影| 日韩视频免费大全中文字幕| 国产欧美精品日韩精品| 久久久噜噜噜久久中文字免| 久久韩剧网电视剧| 国产精品日韩精品| 亚洲大胆美女视频| 亚洲高清一二三区| 久久手机精品视频| 欧美精品在线免费观看| 国产精品一区二区3区| 日本a级片电影一区二区| 日韩电影视频免费| 亚洲成色777777在线观看影院| xvideos成人免费中文版| 久久久久亚洲精品国产| 日韩一级黄色av| 欧美视频中文在线看| 国产精品91免费在线| 狠狠色狠狠色综合日日小说| 欧美精品video| 51精品在线观看| 国产偷国产偷亚洲清高网站| 国内精品久久影院| 久久97久久97精品免视看| 黄色成人av网| 欧美日韩国产精品| 亚洲一区二区三区视频| 国产精品永久免费观看| 欧美黄色性视频| 亚洲日韩中文字幕在线播放| 日韩美女视频中文字幕| 最新国产精品拍自在线播放| 国产一区二区丝袜高跟鞋图片| 不用播放器成人网| 国产精品99一区| 亚洲毛片一区二区| 久久不射热爱视频精品| 国产精品偷伦一区二区| 色噜噜狠狠狠综合曰曰曰| 色综合久久精品亚洲国产| 一区二区在线免费视频| 热久久视久久精品18亚洲精品| 在线视频中文亚洲| 欧美精品在线观看91| 国产精品男人爽免费视频1| 青草成人免费视频| 欧美丝袜美女中出在线| 国产一区二区激情| www.亚洲一二| 国产亚洲日本欧美韩国| 欧美日韩加勒比精品一区| 午夜精品三级视频福利| 国产欧美日韩视频| 亚洲综合国产精品| 不卡中文字幕av| 久久精品国产一区二区电影| 国产精品观看在线亚洲人成网| 国产亚洲精品久久久优势| 国产精品香蕉在线观看| 中日韩美女免费视频网址在线观看| 国产视频精品在线| 欧美激情精品久久久久久久变态| 欧美一级大胆视频| 久久99精品久久久久久噜噜| 日韩视频免费中文字幕| 日本成人在线视频网址| 国产精品国语对白| 国产精品三级美女白浆呻吟| 欧美夫妻性生活视频| 欧美午夜女人视频在线| 色99之美女主播在线视频| 国内精品视频久久| 国产精品视频白浆免费视频| 91在线中文字幕| 91社影院在线观看| 色噜噜狠狠色综合网图区| 亚洲免费人成在线视频观看| 午夜精品久久久久久99热| 韩国欧美亚洲国产| 午夜精品久久久99热福利| 亚洲精品自产拍| 国产日韩欧美夫妻视频在线观看| 亚洲性生活视频| 欧美成人激情视频| 色妞欧美日韩在线| 亚洲最大成人在线| 欧美极品在线视频|