生活随笔
收集整理的這篇文章主要介紹了
Android在初始化时弹出popwindow的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android中在onCreate()時彈出popwindow,很多人都有過類似的需求吧,但是直接在onCreate()中調用popwindow的showAtLocation()方法是會報異常的,原因是此時activity還沒有初始化完畢,網上也有一些解決方法,但一般都是通過延時一小段時間再彈出實現的,代碼不夠健壯。其實可以通過不斷的檢測當前activity的狀態,一旦初始化完畢立即調用popwindow的showAtLocation()方法顯示。詳細代碼如下:
[java] view plaincopy
???????????????????????????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();????????????????????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);??????????????????????????????Runnable?showPopWindowRunnable?=?new?Runnable()?{????????????????????????????@Override??????????????public?void?run()?{????????????????????????????????????View?view?=?findViewById(R.id.main);????????????????????????????????????if(?view?!=?null?&&?view.getWidth()?>?0?&&?view.getHeight()?>?0)?{????????????????????????????????????????????mPopupWindow.showAtLocation(PopWActivity.this.findViewById(R.id.main),??????????????????????????????Gravity.CENTER,?0,?0);????????????????????????????????????????????mHandler.removeCallbacks(this);??????????????????}?else?{????????????????????????????????????????????mHandler.postDelayed(this,?detchTime);??????????????????}??????????????}??????????};????????????????????mHandler.post(showPopWindowRunnable);??????????????}??}?
總結
以上是生活随笔為你收集整理的Android在初始化时弹出popwindow的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。