• android WindowManager的简单使用


    引用

    https://blog.csdn.net/Love667767/article/details/105735008

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
        <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
        <application
            android:allowBackup="true"
            android:dataExtractionRules="@xml/data_extraction_rules"
            android:fullBackupContent="@xml/backup_rules"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/Theme.App0"
            tools:targetApi="31">
            <activity
                android:name=".MainActivity"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    package com.koala.app0;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Context;
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.Button;
    import android.widget.FrameLayout;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
    
        private static Context context;
        private Button button;
        private View imageView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            context = getApplication().getApplicationContext();
            button = findViewById(R.id.btn1);
    
            imageView = LayoutInflater.from(context).inflate(R.layout.png,null);
    
            button.setOnClickListener(listener);
    
        }
    
        private View.OnClickListener listener =  new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
    //            layoutParams.format = PixelFormat.RGBA_8888;
                layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
    //            layoutParams.width = 200;
    //            layoutParams.height = 200;
    
    //            layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
    
    //            layoutParams.gravity = Gravity.BOTTOM | Gravity.LEFT;
                layoutParams.x = 30;
                layoutParams.y = 40;
                WindowManager windowManager = getWindowManager();
                windowManager.addView(imageView,layoutParams);
            }
        };
        
        
        
    
        public static Context getContext(){
            return context;
        }
    }
    
    其他选项
    WindowManager mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
    WindowManager.LayoutParams = new WindowManager.LayoutParams();
    View mView = LayoutInflater.from(mContext).inflate(R.layout.pop_message_view, null);
    //设置图片格式,效果为背景透明
    mLayoutParams.format = PixelFormat.RGBA_8888;
    //悬浮窗位置
    mLayoutParams.x = 768; 
    mLayoutParams.y = 100;
    //悬浮窗大小
    mLayoutParams.width = 1026;
    mLayoutParams.height = 400;
    //悬浮窗起始位置
    mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
    //悬浮窗口类型
    mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
    mLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                    | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
    //悬浮窗动画
    mLayoutParams.windowAnimations = R.style.toast_anim_view;
    mWindowManager.addView(mView, mLayoutParams);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
  • 相关阅读:
    0基础,跟我一起学python---基础篇
    转码服务serverless探索
    自动化运维工具Ansible工具学习及使用---持续更新中
    (十五)admin-boot项目之使用undertow来替代tomcat容器
    软件开发项目文档系列之九如何撰写测试方案
    学习记忆——方法篇——连锁拍照、情景故事和逻辑故事法
    关于k8s集群中连接数不够,内存溢出的20道高级面试题
    解决error: invalid conversion from ‘unsigned char‘ to ‘unsigned char*‘
    Spring(完整版)
    代码随想录一一一双指针法一一一移除元素
  • 原文地址:https://blog.csdn.net/weixin_38331049/article/details/132580560