Wenn ein Button gedrückt wird Started ein intent einen service(deswegen muss aber auch in die Manifest:
<service android:enabled="true" android:name=".running_dude" />)
da mache ich das:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(the_view, params);
the_view ist hier eine erstellte SurfaceView classe.
Um nun eine Animation hinzubekommen starte ich in:
public void surfaceCreated(SurfaceHolder holder) {}
Einen Thread.
Der Thread ist wie bei einem spiel aufgebaut also:
@Override
public void run() {
while (isRunning) {
Canvas theCanvas = null;try {
theCanvas = theView.getHolder().lockCanvas();
synchronized (theView.getHolder()) {
theView.onDraw(theCanvas);
}
finally {
if (theCanvas != null) {
theView.getHolder().unlockCanvasAndPost(theCanvas);
}
}
durch das sich immer wiederholende onDraw() kann man Bewegungen mitrein bringen.
Dann hat ich noch das problem das der ganze Bildschirm schwarz war also musste ich das machen:
surfaceHolder.setFormat(PixelFormat.TRANSPARENT);
...und fertig bisher hab ichs geschaft, dass sich eine Bitmap über den Bildschirm bewegt auch wenn andere apps offen sind ect...