android-windowManager使用实例
1 public static boolean isStarted; 2 private WindowManager windowManager; 3 private WindowManager.LayoutParams layoutParams; 4 private View displayView; 5 6 private Handler mHandler = new Handler(); 7 private Button accOn; 8 private Button accOff; 9 10 @Override 11 public void onCreate() { 12 super.onCreate(); 13 windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 14 layoutParams = new WindowManager.LayoutParams(); 15 layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; 16 layoutParams.format = PixelFormat.RGBA_8888; 17 layoutParams.gravity = Gravity.CENTER | Gravity.TOP; 18 // layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 19 layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; 20 layoutParams.width = 250; 21 layoutParams.height = 50; 22 layoutParams.x = 500; 23 layoutParams.y = 0; 24 } 25 26 @Override 27 public IBinder onBind(Intent intent) { 28 return null; 29 } 30 31 @Override 32 public int onStartCommand(Intent intent, int flags, int startId) { 33 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {//兼容android8.0以上需要启动前台服务 34 NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 35 NotificationChannel mChannel = new NotificationChannel("CHANNEL_ID_STRING", "检查连接状态", NotificationManager.IMPORTANCE_HIGH); 36 notificationManager.createNotificationChannel(mChannel); 37 Notification notification = new Notification.Builder(getApplicationContext(), "CHANNEL_ID_STRING").build(); 38 startForeground(1, notification); 39 } 40 isStarted = true; 41 showFloatingWindow(); 42 return super.onStartCommand(intent, flags, startId); 43 } 44 45 private String address; 46 private void showFloatingWindow() { 47 if (Settings.canDrawOverlays(this)) { 48 LayoutInflater layoutInflater = LayoutInflater.from(this); 49 displayView = layoutInflater.inflate(R.layout.window, null); 50 accOn = displayView.findViewById(R.id.acc_on); 51 accOn.setOnClickListener(new View.OnClickListener() { 52 @Override 53 public void onClick(View view) { 54 55 } 56 }); 57 accOff = displayView.findViewById(R.id.acc_off); 58 accOff.setOnClickListener(new View.OnClickListener() { 59 @Override 60 public void onClick(View view) { 61 62 } 63 }); 64 windowManager.addView(displayView, layoutParams); 65 } 66 }