Ich hatte das gleiche Problem und hier ist, wie ich es gelöst habe. Zuerst habe ich versucht, die native PopupWindow
Klasse von Android zu verwenden, aber später entschied ich mich, WindowManager
zu verwenden, und zwar auf diese Weise :
public class MyService extends Service {
private View mView;
private WindowManager.LayoutParams mParams;
private WindowManager mWindowManager;
@Override
public void onCreate() {
super.onCreate();
mView = new MyLoadView(this);
mParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT, 150, 10, 10,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
mParams.gravity = Gravity.CENTER;
mParams.setTitle("Window test");
mWindowManager = (WindowManager)getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mView, mParams);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
((WindowManager)getSystemService(WINDOW_SERVICE)).removeView(mView);
mView = null;
}
public class MyLoadView extends View {
private Paint mPaint;
public MyLoadView(Context context) {
super(context);
mPaint = new Paint();
mPaint.setTextSize(50);
mPaint.setARGB(200, 200, 200, 200);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText("test test test", 0, 100, mPaint);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
}
Sie können diese Service-Klasse über einen Intent aufrufen :
intent = new Intent(mContext, MyService.class);
if (intent != null) {
getContext().startService(intent);
}
Setzen Sie auch die Berechtigung in Ihrer Manifest-Datei :
Ich habe die LoadAverageService.java
Klasse von Android referenziert und schließlich ein Popup-Fenster vom Service aus erstellt! Dies ist ein sehr einfaches Beispiel, also müssen Sie vielleicht noch etwas hinzufügen, wenn Sie komplexe Funktionen entwickeln wollen. Hoffentlich hilft dies Ihnen und anderen.