<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

适用android2.x 在应用程序中自定义dialog,复制dialog.java到应用程序中并修改方法
 public void setContentView(int layoutResID) {        mWindow.requestFeature(Window.FEATURE_NO_TITLE);        mWindow.setContentView(layoutResID);    }    public void setContentView(View view) {    mWindow.requestFeature(Window.FEATURE_NO_TITLE);        mWindow.setContentView(view);    }    public void setContentView(View view, ViewGroup.LayoutParams params) {    mWindow.requestFeature(Window.FEATURE_NO_TITLE);    mWindow.setContentView(view, params);    }    public void show(boolean focusable) {        if (mShowing) {            if (mDecor != null) {                mDecor.setVisibility(View.VISIBLE);            }            return;        }        if (!mCreated) {            dispatchOnCreate(null);        }        onStart();        mDecor = mWindow.getDecorView();        WindowManager.LayoutParams l = mWindow.getAttributes();        if ((l.softInputMode                & WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) == 0) {            WindowManager.LayoutParams nl = new WindowManager.LayoutParams();            nl.copyFrom(l);            nl.softInputMode |=                    WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION;            l = nl;        }        l.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT         | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;        l.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;        if (!focusable) {        l.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL         | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;        }        try {            mWindowManager.addView(mDecor, l);            mShowing = true;            sendShowMessage();        } finally {        }    }    private static final String POLICY_IMPL_CLASS_NAME =        "com.android.internal.policy.impl.Policy";    private static final Object sPolicy;    private static final Class policyClass;    static {        // Pull in the actual implementation of the policy at run-time        try {            policyClass = Class.forName(POLICY_IMPL_CLASS_NAME);            sPolicy = policyClass.newInstance();        } catch (ClassNotFoundException ex) {            throw new RuntimeException(                    POLICY_IMPL_CLASS_NAME + " could not be loaded", ex);        } catch (InstantiationException ex) {            throw new RuntimeException(                    POLICY_IMPL_CLASS_NAME + " could not be instantiated", ex);        } catch (IllegalAccessException ex) {            throw new RuntimeException(                    POLICY_IMPL_CLASS_NAME + " could not be instantiated", ex);        }    }    public SmartWindow(Context context, int theme) {    //由于SmartWindow的生命周期有可能会超出调用它的对象(Activity,Service)    //比如Activity已经finish掉了,但是SmartWindow没有dismiss掉,    //则会导致内存泄漏,因此这里强制使用ApplicationContext        mContext = new ContextThemeWrapper(        context.getApplicationContext(), theme == 0 ? android.R.style.Theme_InputMethod : theme);        mWindowManager = (WindowManager)context.getApplicationContext().getSystemService("window");Window w = null;try {Method m = policyClass.getMethod("makeNewWindow", Context.class);w = (Window)m.invoke(sPolicy, mContext);} catch (IllegalArgumentException e) {Log.e(TAG, e.getMessage()+"");} catch (IllegalAccessException e) {Log.e(TAG, e.getMessage()+"");} catch (InvocationTargetException e) {Log.e(TAG, e.getMessage()+"");} catch (SecurityException e) {Log.e(TAG, e.getMessage()+"");} catch (NoSuchMethodException e) {Log.e(TAG, e.getMessage()+"");}        mWindow = w;        w.setCallback(this);        w.setWindowManager(mWindowManager, null, null);        w.setGravity(Gravity.CENTER);        mUiThread = Thread.currentThread();        mListenersHandler = new ListenersHandler(this);    }

更多相关文章

  1. android 如何判断程序是否在前台运行
  2. Android(安卓)判断程序是否在前台运行
  3. Android应用程序启动画面
  4. Multiple APK Support in Android(安卓)Market
  5. Android(安卓)APP的发布流程
  6. Android(安卓)WindowManager 窗口泄漏的解决记录
  7. Android(安卓)InputMethodManager泄漏Activity
  8. Android重启应用程序代码
  9. Android(安卓)获取已经安装的程序

随机推荐

  1. 内存管理
  2. Android自定义View之View的绘制流程
  3. android菜单_Android:菜单类调查
  4. Android原理之动态墙纸
  5. ADB 连接不上 Android 设备
  6. Android 设置界面修改为Iphone的tab菜单
  7. Android 资源加载机制剖析
  8. Android之获取手机UDID
  9. Android的升级策略
  10. Android adb常用指令使用指南