Proviamo a istanziare un oggetto di tipo WindowManager. Ho reso WindowManager wm come variabile di istanza.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Immagine immagine=new Immagine(this); wm=(WindowManager)this.getSystemService(Context.WINDOW_SERVICE); wm.addView(immagine);Ottengo un errore perché il metodo addView prevede necessariamente due parametri di cui uno i parametri.
Devo quindi studiare WindowManager.LayoutParams.
Vediamoli!
Soprattutto, quanti parametri hanno questi LayoutParams?
Qui ne figurano cinque.
- larghezza
- altezza
- tipo
- flags
- format
WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0, // WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE // | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT);Ci provo.
Ci si aggiunge anche la proprietà Gravity.
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;(scritti da me).
E ora ci provo...
Niente da fare!
Mi rendo conto che si tratta di un Service, non di un'Activity.
Costruisco un Service.
Il codice è posto nel metodo onCreate.
E funziona!!!
Nessun commento:
Posta un commento