android WindowManager的简单使用

java 复制代码
<?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>
java 复制代码
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;
    }
}
相关推荐
AgCl2335 分钟前
MYSQL-6-函数与约束-3/17
android·数据库·mysql
zzb15801 小时前
Fragment 生命周期深度图解:从 onAttach 到 onDetach 完整流程(面试必备)
android·java·面试·安卓
众少成多积小致巨1 小时前
Android 源码查看笔记
android·源码
angerdream2 小时前
Android手把手编写儿童手机远程监控App之前台服务
android
敲代码的瓦龙3 小时前
Android?Activity!!!
android
重生之我在安卓搞音频5 小时前
二、Android 音频框架
android·音视频
studyForMokey5 小时前
【Android面试】Java专题 todo
android·java·面试
代码改善世界5 小时前
【MATLAB初阶】矩阵操作(二):矩阵的运算
android·matlab·矩阵
九皇叔叔5 小时前
MySQL实操指南:复制表及数据复制全解析
android·数据库·mysql
梦想不只是梦与想5 小时前
flutter 与 Android iOS 通信?以及实现原理(一)
android·flutter·ios·methodchannel·eventchannel·basicmessage