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 }

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

  • 相关阅读:
    butterknife异常提示:attribute value must be constant
    SharedPreferences第一次使用后HashMap将常驻内存
    js获取元素的innerText属性为什么为空
    针对focus和blur的Dom事件触发顺序
    android中View的GONE和INVISIBLE的原理
    HTML中div以及span等元素获取焦点
    android MotionEvent获得当前位置
    IE10 透明背景的div无法遮罩
    jquery中.attr('value')和.val()的区别
    __proto__和protaotype的区分
  • 原文地址:https://www.cnblogs.com/lihaolihao/p/5175780.html
Copyright © 2011-2022 走看看