Android中后台显示悬浮窗口的方法(3)

其实不用Service,也可以直接使用WindowManager.addView()在后台直接显示窗口

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 mDesktopLayout = inflater.inflate(R.layout.volume_panel, null);
 // 取得系统窗体
 mWindowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
 // 窗体的布局样式
 mLayoutParams = new WindowManager.LayoutParams();
 // 设置窗体显示类型――TYPE_SYSTEM_ALERT(系统提示)
 mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
 // 设置窗体焦点及触摸:
 // FLAG_NOT_FOCUSABLE(不能获得按键输入焦点)
 mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 // 设置显示的模式
 mLayoutParams.format = PixelFormat.RGBA_8888;
 // 设置对齐的方法
 mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
 // 设置窗体宽度和高度
 mLayoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
 mLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
 // 设置窗体显示的位置,否则在屏幕中心显示
 mLayoutParams.x = 50;
 mLayoutParams.y = 50;
 mWindowManager.addView(mDesktopLayout, mLayoutParams);

6、总结

这两种方式显示出来的窗口都不会激发当前Activity的onPause()事件。据说还可以先一个窗口风格的Activity,不过显示时会激发当前窗口的onPause()事件,具体咋样没试过。

网上下了一个风格非常不错

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style 
        
        parent="@Android:style/Theme.Dialog"> 
        <item>@null</item><!--边框--> 
        <item>true</item><!--是否浮现在activity之上--> 
        <item>false</item><!--半透明--> 
        <item>true</item><!--无标题--> 
        <!--<item>@drawable/selector_dialog_bg</item>背景透明--> 
        <item>false</item><!--模糊--> 
        <item>0.6</item> 
    </style> 
</resources> 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c0644e0f7f03b8b09dc7f78fea36ac74.html