悬浮框,View置顶

来源:互联网 发布:淘宝刷单违规怎么处理 编辑:程序博客网 时间:2024/05/15 01:41

今天写了个小demo,主要功能:从A应用打开B应用,打开B只会弹出一个View提示。

其实当时想到,其他的App又不是我写的,我怎么能弹出View呢。后来想想也不难只是我的思路错了。

主要就是获取WindowManager就好了大笑


发个图,打开了一个叫"萤Wifi的软件",UI很丑,不要吐槽啊,功能能看就好了


权限别拉下了:

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


代码如下


package com.example.dialogdemo;import android.app.Activity;import android.content.ActivityNotFoundException;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.WindowManager;public class MainActivity extends Activity {private String pkg = "XXXXXXXXXXX"; //应用包名private String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {startApp(MainActivity.this, pkg);new MyThread().run();}});}private class MyThread extends Thread {@Overridepublic void run() {super.run();try {Thread.sleep(4 * 1000);} catch (InterruptedException e) {e.printStackTrace();}creatDialog();}}private void creatDialog() {// 创建LayoutParamsWindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();// 设置窗口的类型layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;// 设置行为选项layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;// 设置透明度layoutParams.alpha = 80;layoutParams.gravity = Gravity.CENTER;// 设置宽高layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;// 添加到View到窗口final WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);// 创建需要添加的Viewfinal View view = LayoutInflater.from(this).inflate(R.layout.dialog_, null);view.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {windowManager.removeView(view);}});windowManager.addView(view, layoutParams);}/** * 启动APP *  * @param context * @param pkg */public void startApp(Context context, String pkg) {try {Intent intent = context.getPackageManager().getLaunchIntentForPackage(pkg);context.startActivity(intent);} catch (ActivityNotFoundException e) {Log.e(TAG, "APP Error:" + e.getMessage());}catch (Exception e) {Log.e(TAG, "APP Error:" + e.getMessage());}}}
就这样不发Demo了,这个很简单。好像小米不行,小米的设置里有个悬浮框显示或者不显示的设置,无力吐槽。


0 0