Android在初始化时弹出popwindow的方法
来源:互联网 发布:普特英语听力软件 编辑:程序博客网 时间:2024/06/08 00:23
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() {@Overridepublic 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在初始化时弹出popwindow的方法
- Android在初始化时弹出popwindow的方法
- Android在初始化时弹出popwindow的方法
- Android在初始化时弹出popwindow的方法
- Android在初始化时弹出popwindow的方法
- Android在初始化时弹出popwindow的方法,就是判断界面是否被加载完了
- android在任意界面弹出popwindow的两种方方法
- Android中popWindow弹出菜单的编写
- 在Activity中弹出popwindow,再点击popwindow里面的控件弹出另一个popwindow时报错
- android popWindow 弹出时背景透明度渐变
- Android PopWindow 弹出框
- 仿微信的弹出popwindow
- PopWindow弹出在任意位置。
- listview点击item,在item的上边弹出popwindow
- 在手指按下的位置弹出PopWindow
- 让PopWindow弹出在某个View的正上方
- 【Android】创建Popwindow弹出菜单
- 分享一下@Override标签背后的小秘密---记录java的思行合一
- linux内核栈与用户栈
- 我对RUP统一软件过程的理解
- Layout Managers(布局管理器)
- Oracle Jdeveloper 上传XML文件到动态数据表中
- Android在初始化时弹出popwindow的方法
- unresolved external symbol _WinMain@16的解决方法
- 创建一个filter实例(transform filter)(好好学习学习)
- poj 1511 Invitation Cards 静态邻接表的SPFA
- 第三周实验报告(任务4)
- java 运用数组常用的几种排序方法
- 详解rsync算法--如何减少同步文件时的网络传输量
- could not connect to saession bus:bin/dbus-launch terminated abnomally without any errror message
- 2012软微科协c++組招新试题答案