Android在初始化時彈出popwindow的方法
Android中在onCreate()時彈出popwindow,很多人都有過類似的需求吧,但是直接在onCreate()中呼叫popwindow的showAtLocation()方法是會報異常的,原因是此時activity還沒有初始化完畢,網上也有一些解決方法,但一般都是通過延時一小段時間再彈出實現的,程式碼不夠健壯。其實可以通過不斷的檢測當前activity的狀態,一旦初始化完畢立即呼叫popwindow的showAtLocation()方法顯示。詳細程式碼如下:
- /************************************************************************
- *
- * 該類用來在初始化的時候彈出一個popwindow,用到的而已檔案如下,特別要注意的是其中的
- * android:minHeight="1dp" 和android:minWidth="1dp"屬性。初始化時彈出popwindow的關鍵是
- * 要等待整個activity初始化完畢後再呼叫showAtLocation()方法,否則會出異常。
- * 實現方式就是不停的檢測acitvity是否初始化完畢,一旦完畢就呼叫
- * showAtLocation() 方法顯示popwindow。
- *
- * 以下為佈局檔案:
- * <?xml version="1.0" encoding="utf-8"?>
- * <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- * android:id="@+id/main"
- * android:layout_width="fill_parent"
- * android:layout_height="fill_parent"
- * android:minHeight="1dp"
- * android:minWidth="1dp"
- * android:orientation="vertical" >
- * </LinearLayout>
- *
- * 作者:石興
- * 完成時間:2012/3/10
- * 版本 :1.0
- *
- ************************************************************************/
- package cn.sd.sx.initpopw;
- import android.app.Activity;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.os.Handler;
- import android.view.Gravity;
- import android.view.View;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.LinearLayout;
- import android.widget.PopupWindow;
- import android.widget.TextView;
- import cn.sd.sx.popw.R;
- public class PopWActivity extends Activity {
- private PopupWindow mPopupWindow;
- private Handler mHandler;
- // 檢測時間間隔
- private int detchTime = 5;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mHandler = new Handler();
- // 顯示popWindow
- showPopWindow();
- }
- private void showPopWindow()
- {
- LinearLayout view = new LinearLayout(this);
- LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,
- LayoutParams.FILL_PARENT);
- TextView txt1 = new TextView(this);
- txt1.setLayoutParams(params);
- txt1.setGravity(Gravity.CENTER);
- txt1.setText("txt1");
- txt1.setBackgroundColor(Color.RED);
- view.addView(txt1);
- mPopupWindow = new PopupWindow(view, 300,300);
- mPopupWindow.setOutsideTouchable(true);
- /*****************以下程式碼用來迴圈檢測activity是否初始化完畢***************/
- Runnable showPopWindowRunnable = new Runnable() {
- @Override
- public void run() {
- // 得到activity中的根元素
- View view = findViewById(R.id.main);
- // 如何根元素的width和height大於0說明activity已經初始化完畢
- if( view != null && view.getWidth() > 0 && view.getHeight() > 0) {
- // 顯示popwindow
- mPopupWindow.showAtLocation(PopWActivity.this.findViewById(R.id.main),
- Gravity.CENTER, 0, 0);
- // 停止檢測
- mHandler.removeCallbacks(this);
- } else {
- // 如果activity沒有初始化完畢則等待5毫秒再次檢測
- mHandler.postDelayed(this, detchTime);
- }
- }
- };
- // 開始檢測
- mHandler.post(showPopWindowRunnable);
- /******************以上程式碼用來迴圈檢測activity是否初始化完畢*************/
- }
- }
相關文章
- Android:PopWindow — 對Android的底部彈窗、頂部彈窗選單及自定義介面的使用封裝Android封裝
- Android中的EditText預設時不彈出軟鍵盤的方法Android
- 自動彈出網頁或不定時彈出網頁的解決方法網頁
- PopWindow:基本使用與自定義PopWindow
- 系統級別的window,應用級別的彈出框Dialog/popwindow (dismiss和cancel和hide)IDE
- 在Watir中整合AutoIt處理JavaScript彈出視窗的方法JavaScript
- Tim定時器初始化的方法定時器
- win10彈出usb時出現該裝置正在使用的解決方法Win10
- ios 仿android的popupwindow彈出選單iOSAndroid
- PPT儲存時出現“連同字型儲存”彈窗的解決方法
- 在 Java 中初始化 List 的五種方法Java
- Android Dialog風格彈出框的ActivityAndroid
- Android 監聽鍵盤彈出收起Android
- Android基礎 淡入淡出、上下彈出動畫的Android動畫
- 彈彈彈,彈走魚尾紋的彈出選單(vue)Vue
- jquery 在指定位置彈出div框jQuery
- iOS鍵盤彈出時動畫時長失效問題iOS動畫
- Android仿微信支付密碼彈出層Android密碼
- 阻止android軟鍵盤自動彈出Android
- Win10系統開啟檔案時彈出多個視窗的解決方法Win10
- UpdatePanel下解決提示框不彈出的方法
- Android中EditTex焦點設定和彈不彈出輸入法的問題Android
- win10安全中心老彈出怎麼關閉 win10關閉彈出安全中心彈出提示操作方法Win10
- webwork在系統重啟的時候的初始化問題Web
- 釋出android app到android market的方法AndroidAPP
- Android監聽軟鍵盤收起與彈出Android
- Android實現人人網點選“+”彈出效果Android
- android 軟軟的動畫彈出選單,基於Facebook的RebuondAndroid動畫
- vuejs在解析時出現閃爍的原因及防止閃爍的方法VueJS
- Android過時方法替代Android
- Win10系統阻止彈出OneDrive視窗的方法Win10
- mui日期選擇器彈出兩次的解決方法UI
- ORACLE在修改主鍵時出現ORA-00955的解決方法Oracle
- UE Puerts 在 Android 的除錯方法Android除錯
- 第二彈:當你在工作的時候被趕下車
- 監聽Android軟體盤彈出及隱藏Android
- 視訊直播原始碼,提醒類彈窗,到時間後自動彈出原始碼
- Swift的惰性初始化方法Swift