Android长久浮窗 service

时间:2021-10-18 15:20:27
package com.example.suspendview;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.IBinder;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.TextView;
public class TopFloatService extends Service {
private View view;
private WindowManager windowManager;

private WindowManager.LayoutParams layoutParams;
private TextView text;
private Context context;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
creatView();

}
private void creatView() {
// TODO Auto-generated method stub
view = LayoutInflater.from(this).inflate(R.layout.main, null);
text = (TextView) view.findViewById(R.id.flowspeed);
text.setText("工厂模式");
windowManager = (WindowManager) this.getSystemService(WINDOW_SERVICE);

/*
* TYPE_SYSTEM_OVERLAY:窗口显示的时候焦点在后面的Activity上,仍旧可以操作后面的Activity
* LayoutParams.TYPE_SYSTEM_ERROR:保证该悬浮窗所有View的最上层 ,不可点后面的activity
* LayoutParams.FLAG_NOT_FOCUSABLE:该浮动窗不会获得焦点
* PixelFormat.TRANSPARENT:悬浮窗透明
*/

layoutParams = new WindowManager.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
LayoutParams.TYPE_SYSTEM_OVERLAY, LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSPARENT);
layoutParams.gravity= Gravity.TOP;
layoutParams.x=160;
// layoutParams.y=160;
windowManager.addView(view, layoutParams);
Log.e("st", "creat");
}

public void closeViwe(){
windowManager.removeView(view);
}

private void OnInterceptTouchEvent() {
// TODO Auto-generated method stub
}
}

package com.example.suspendview;
import java.io.File;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
/**
*
* @ClassName: MainActivity
* @Description: TODO(这里用一句话描述这个类的作用)
* @date 2017-6-15
* 实现悬浮窗功能
*/

public class MainActivity extends Activity {
private Button bt;
private TextView tv;
private TopFloatService tp;
WindowManager windowmage;
private Context context;
Intent intent;
View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv =(TextView) findViewById(R.id.tv);
tp = new TopFloatService();


boolean tt=isExist();
tv.setText(tt+"");
intent = new Intent(MainActivity.this, TopFloatService.class);
startService(intent);
// finish();


}


public void bt(View view){

intent = new Intent(MainActivity.this, TopFloatService.class);
stopService(intent);
tp.closeViwe();
Log.e("st", "close");
}
}

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



<service android:name="com.example.suspendview.TopFloatService"> </service>
```
-------
````
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id="@+id/flowspeed"
android:textSize="60sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="工厂设置"
android:textColor="#ff00ff" />



</LinearLayout>