zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    单元测试、TDD和BDD的差别
    关于程序员的发展方向
    forin为什么不按照顺序遍历对象
    CSS BEM 书写规范
    c#基础知识20问
    单个编译c#中的cs文件
    c#排序算法(待续)
    (转)getElementByID getElementsByName getElementsByTagName用法详解
    安装SQL Server 2005 性能计数器错误的解决方法
    创建和使用c#DLL(摘自MSDN)
  • 原文地址:https://www.cnblogs.com/lihaolihao/p/5175780.html
Copyright © 2011-2022 走看看