| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package com.izouma.mobilecybergames;
- import android.app.Service;
- import android.content.Intent;
- import android.graphics.Color;
- import android.graphics.PixelFormat;
- import android.os.Build;
- import android.os.IBinder;
- import android.provider.Settings;
- import android.support.annotation.Nullable;
- import android.view.Gravity;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.WindowManager;
- import android.widget.Button;
- public class FloatWindowService extends Service {
- private WindowManager windowManager;
- private WindowManager.LayoutParams layoutParams;
- @Override
- public void onCreate() {
- super.onCreate();
- windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
- layoutParams = new WindowManager.LayoutParams();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
- } else {
- layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
- }
- layoutParams.format = PixelFormat.RGBA_8888;
- layoutParams.gravity = Gravity.LEFT | Gravity.TOP;
- layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
- layoutParams.width = 500;
- layoutParams.height = 100;
- layoutParams.x = 300;
- layoutParams.y = 300;
- }
- @Nullable
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断系统版本
- if (Settings.canDrawOverlays(this)) {
- Button button = new Button(getApplicationContext());
- button.setText("我是个button窗口");
- button.setBackgroundColor(Color.BLUE);
- windowManager.addView(button, layoutParams);
- button.setOnTouchListener(new FloatingOnTouchListener());
- }
- } else {
- Button button = new Button(getApplicationContext());
- button.setText("我是个button窗口");
- button.setBackgroundColor(Color.BLUE);
- windowManager.addView(button, layoutParams);
- button.setOnTouchListener(new FloatingOnTouchListener());
- }
- return super.onStartCommand(intent, flags, startId);
- }
- private class FloatingOnTouchListener implements View.OnTouchListener {
- private int x;
- private int y;
- @Override
- public boolean onTouch(View view, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- x = (int) event.getRawX();
- y = (int) event.getRawY();
- break;
- case MotionEvent.ACTION_MOVE:
- int nowX = (int) event.getRawX();
- int nowY = (int) event.getRawY();
- int movedX = nowX - x;
- int movedY = nowY - y;
- x = nowX;
- y = nowY;
- layoutParams.x = layoutParams.x + movedX;
- layoutParams.y = layoutParams.y + movedY;
- windowManager.updateViewLayout(view, layoutParams);
- break;
- default:
- break;
- }
- return false;
- }
- }
- }
|