日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android在初始化时弹出popwindow的方法

發布時間:2025/6/15 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android在初始化时弹出popwindow的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android中在onCreate()時彈出popwindow,很多人都有過類似的需求吧,但是直接在onCreate()中調用popwindow的showAtLocation()方法是會報異常的,原因是此時activity還沒有初始化完畢,網上也有一些解決方法,但一般都是通過延時一小段時間再彈出實現的,代碼不夠健壯。其實可以通過不斷的檢測當前activity的狀態,一旦初始化完畢立即調用popwindow的showAtLocation()方法顯示。詳細代碼如下:

[java] view plaincopy
  • /************************************************************************?
  • ?*?
  • ?*?該類用來在初始化的時候彈出一個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的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。