日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/6/15 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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