android 窗口的使用

android 窗口类型分为三类:

1,第一种为应用窗口。所谓的应用窗口一般是指该窗口对应一个Activity,由于加载Activity是由AmS完成的,因此,对于应用程序来讲,要创建一个应用类窗口,只能      在Activity内部完成。

2,第二种是子窗口。所谓的子窗口是指,该窗口必须有一个父窗口,父窗口可以是一个应用类型窗口,也可以是任何其他类型的窗口。

3,第三种是系统窗口。系统窗口不需要对应任何Activity,也不需要有父窗口。对于应用程序而言,理论上是无法创建系统窗口,因为所有的  

     应用程序都没有这个权限,然而系统进程却可以创建系统窗口。

 

创建一个窗口

1,添加权限

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

2,android  code

 1 public class WindowActivity extends AppCompatActivity {
 2 
 3     private WindowManager wm;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_window);
 9          wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
10     }
11 
12     public void show(View view) {
13       final View views = LayoutInflater.from(this).inflate(R.layout.dialog_layout, null);
14         views.findViewById(R.id.cnacel).setOnClickListener(new View.OnClickListener() {
15             @Override
16             public void onClick(View v) {
17                 wm.removeView(views);
18             }
19         });
20         views.findViewById(R.id.sure).setOnClickListener(new View.OnClickListener() {
21             @Override
22             public void onClick(View v) {
23                 wm.removeView(views);
24             }
25         });
26         IBinder token = view.getWindowToken();
27         //WindowManager.LayoutParams.TYPE_APPLICATION_PANEL,子窗口
28         WindowManager.LayoutParams lp =  new WindowManager.LayoutParams(
29                 WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,
30                 WindowManager.LayoutParams.TYPE_PRIORITY_PHONE,//系统窗口跟activity没有关系,可以在任何activity上弹出来
31                 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
32                 | WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING,
33                 PixelFormat.RGBX_8888
34         );
35 
36         lp.gravity = Gravity.CENTER_HORIZONTAL |Gravity.CENTER;
37         lp.token = token;
38 
39         wm.addView(views,lp);
40     }
41 }

(小米手机测试时要打开悬浮框)

 

转载于:https://www.cnblogs.com/lihaolihao/p/5175780.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值