Numerosi sistemi operativi forniscono una barra delle applicazioni, ad esempio il dock Mac OS X, che può contenere un'icona per rappresentare un'applicazione. Adobe® AIR® fornisce un'interfaccia per l'interazione con l'icona della barra delle applicazioni tramite la proprietà
NativeApplication.nativeApplication.icon
.
Informazioni sulle icone della barra delle applicazioni
AIR consente di creare automaticamente gli oggetti
NativeApplication.nativeApplication.icon
. Il tipo di oggetto è DockIcon o SystemTrayIcon, in base al sistema operativo utilizzato. Potete determinare quali di queste sottoclassi InteractiveIcon sono supportate da AIR sul sistema operativo corrente utilizzando le proprietà
NativeApplication.supportsDockIcon
e
NativeApplication.supportsSystemTrayIcon
. La classe base InteractiveIcon fornisce le proprietà
width
,
height
e
bitmaps
che potete utilizzare per modificare l'immagine utilizzata per l'icona. Tuttavia, l'accesso a proprietà specifiche di DockIcon o SystemTrayIcon sul sistema operativo errato genera un errore di runtime.
Per impostare o modificare l'immagine utilizzata per un'icona, potete creare un array contenente una o più immagini e assegnarlo alla proprietà
NativeApplication.nativeApplication.icon.bitmaps
. Le dimensioni delle icone della barra delle applicazioni possono essere diverse su sistemi operativi diversi. Per evitare la perdita di qualità delle immagini causata dal ridimensionamento, potete aggiungere immagini di diverse dimensioni all'array
bitmaps
. In questo caso, AIR seleziona la dimensione più simile a quella utilizzata per visualizzare l'icona della barra delle applicazioni corrente, ridimensionandola solo se necessario. L'esempio seguente imposta l'immagine per un'icona della barra delle applicazioni utilizzando due immagini:
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Per modificare l'immagine dell'icona, assegnate un array contenente la nuova immagine, o le immagini, alla proprietà
bitmaps
. Potete animare l'icona modificando l'immagine in risposta a un evento
enterFrame
o
timer
.
Per rimuovere l'icona dall'area di notifica di Windows e Linux, o ripristinare l'aspetto predefinito dell'icona in Mac OS X, impostate
bitmaps
su un array vuoto:
NativeApplication.nativeApplication.icon.bitmaps = [];
Icone del dock
AIR include il supporto per le icone del dock quando la proprietà
NativeApplication.supportsDockIcon
è impostata su
true
. La proprietà
NativeApplication.nativeApplication.icon
rappresenta l'icona dell'applicazione sul dock (non un'icona del dock della finestra).
Nota:
AIR non include il supporto per la modifica delle icone della finestra sul dock in Mac OS X. Inoltre, le modifiche all'icona del dock dell'applicazione possono essere applicate solo quando un'applicazione è in esecuzione; al termine dell'applicazione viene ripristinato l'aspetto originale dell'icona.
Menu delle icone del dock
Per aggiungere comandi al menu del dock standard, potete creare un oggetto NativeMenu contenente i comandi e assegnarlo alla proprietà
NativeApplication.nativeApplication.icon.menu
. Le voci nel menu vengono visualizzate sopra le voci di menu dell'icona del dock standard.
Movimento sul dock
Per muovere l'icona del dock, potete chiamare il metodo
NativeApplication.nativeApplication.icon.bounce()
. Impostando il parametro
bounce() priority
su informational, l'icona si muove una volta. Impostando il parametro su critical, l'icona si muove fino a quando l'utente non attiva applicazione. Le costanti per il parametro
priority
sono definite nella classe NotificationType.
Nota:
se l'applicazione è già attiva, l'icona non si muove.
Eventi dell'icona del dock
Quando si fa clic sull'icona del dock, l'oggetto NativeApplication invia un evento
invoke
. L'applicazione viene avviata dal sistema, se non è già in esecuzione. In caso contrario, l'evento
invoke
viene inviato all'istanza dell'applicazione in esecuzione.
Icone della barra delle applicazioni
AIR supporta le icone della barra delle applicazioni se la proprietà
NativeApplication.supportsSystemTrayIcon
è impostata su
true
. Questa situazione si verifica solo in Windows e nella maggior parte delle distribuzioni Linux. In Windows e Linux le icone della barra delle applicazioni sono visualizzate nell'area di notifica della barra delle applicazioni. Per impostazione predefinita non è visualizzata nessuna icona. Per mostrare un'icona, assegnate un array contenente oggetti BitmapData alla proprietà
bitmaps
dell'icona. Per modificare l'immagine dell'icona, assegnate un array contenente le nuove immagini a
bitmaps
. Per rimuovere l'icona, impostate
bitmaps
su
null
.
Menu dell'icona della barra delle applicazioni
Per aggiungere un menu all'icona della barra delle applicazioni, potete creare un oggetto NativeMenu e assegnarlo alla proprietà
NativeApplication.nativeApplication.icon.menu
(il sistema operativo non fornisce nessun menu predefinito). Per accedere all'icona della barra delle applicazioni, fate clic con il pulsante destro del mouse sull'icona.
Descrizione comandi dell'icona della barra delle applicazioni
Per aggiungere una descrizione comandi a un'icona, impostate la proprietà tooltip:
NativeApplication.nativeApplication.icon.tooltip = "Application name";
Eventi dell'icona della barra delle applicazioni
L'oggetto SystemTrayIcon a cui fa riferimento la proprietà NativeApplication.nativeApplication.icon invia un evento ScreenMouseEvent per gli eventi
click
,
mouseDown
,
mouseUp
,
rightClick
,
rightMouseDown
e
rightMouseUp
. Potete usare questi eventi, insieme al menu di un'icona, per consentire agli utenti di interagire con l'applicazione quando questa non dispone di finestre visibili.
Esempio: creazione di un'applicazione senza finestre
L'esempio seguente crea un'applicazione AIR che contiene un'icona della barra delle applicazioni, ma nessuna finestra visibile. (La proprietà
visible
dell'applicazione non deve essere impostata su
true
nel descrittore dell'applicazione; in caso contrario la finestra sarà visibile all'avvio dell'applicazione).
package
{
import flash.display.Loader;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.display.Sprite;
import flash.desktop.DockIcon;
import flash.desktop.SystemTrayIcon;
import flash.events.Event;
import flash.net.URLRequest;
import flash.desktop.NativeApplication;
public class SysTrayApp extends Sprite
{
public function SysTrayApp():void{
NativeApplication.nativeApplication.autoExit = false;
var icon:Loader = new Loader();
var iconMenu:NativeMenu = new NativeMenu();
var exitCommand:NativeMenuItem = iconMenu.addItem(new NativeMenuItem("Exit"));
exitCommand.addEventListener(Event.SELECT, function(event:Event):void {
NativeApplication.nativeApplication.icon.bitmaps = [];
NativeApplication.nativeApplication.exit();
});
if (NativeApplication.supportsSystemTrayIcon) {
NativeApplication.nativeApplication.autoExit = false;
icon.contentLoaderInfo.addEventListener(Event.COMPLETE, iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_16.png"));
var systray:SystemTrayIcon =
NativeApplication.nativeApplication.icon as SystemTrayIcon;
systray.tooltip = "AIR application";
systray.menu = iconMenu;
}
if (NativeApplication.supportsDockIcon){
icon.contentLoaderInfo.addEventListener(Event.COMPLETE,iconLoadComplete);
icon.load(new URLRequest("icons/AIRApp_128.png"));
var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
dock.menu = iconMenu;
}
}
private function iconLoadComplete(event:Event):void
{
NativeApplication.nativeApplication.icon.bitmaps =
[event.target.content.bitmapData];
}
}
}
Nota:
quando utilizzate il componente WindowedApplication di Flex, impostate l'attributo
visible
del tag WindowedApplication su
false
. Questo attributo sostituisce l'impostazione nel descrittore dell'applicazione.
Nota:
l'esempio presuppone l'esistenza di file di immagine denominati
AIRApp_16.png
e
AIRApp_128.png
in una sottodirectory
icons
dell'applicazione (nell'SDK di AIR sono inclusi alcuni file icona di esempio che potete copiare nella cartella del progetto).
Icone e pulsanti della barra delle applicazioni
Rappresentazioni iconizzate delle finestre sono in genere visualizzate nell'area della finestra di una barra delle applicazioni o del dock per consentire agli utenti di accedere in modo semplice a finestre di sfondo o ridotte a icona. Il dock Mac OS X visualizza un'icona per l'applicazione, nonché un'icona per ciascuna finestra ridotta a icona. Nella barra delle applicazioni di Microsoft Windows e Linux è visualizzato un pulsante contenente il titolo e l'icona del programma per ogni finestra di tipo normale dell'applicazione.
Evidenziazione del pulsante della finestra della barra delle applicazioni
Quando una finestra è visualizzata sullo sfondo, potete inviare una notifica all'utente per indicare il verificarsi di un evento correlato alla finestra. In Mac OS X, potete inviare una notifica all'utente muovendo l'icona del dock dell'applicazione (come descritto in
Movimento sul dock
). In Windows e Linux potete evidenziare il pulsante della barra delle applicazioni della finestra chiamando il metodo
notifyUser()
dell'istanza NativeWindow. Il parametro
type
passato al metodo determina l'urgenza della notifica:
-
NotificationType.CRITICAL
: l'icona della finestra lampeggia fino a quando l'utente non visualizza la finestra in primo piano.
-
NotificationType.INFORMATIONAL
: l'icona della finestra viene evidenziata modificando il colore.
Nota:
in Linux è supportato solo il tipo informativo di notifica. Otterrete lo stesso effetto passando uno qualsiasi dei valori di tipo alla funzione
notifyUser()
.
L'istruzione seguente evidenzia il pulsante della barra delle applicazioni di una finestra:
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
La chiamata del metodo
NativeWindow.notifyUser()
in un sistema operativo che non supporta la notifica a livello di finestra non ha effetto. Potete utilizzare la proprietà
NativeWindow.supportsNotification
per determinare se è supportata la notifica a livello di finestra.
Creazione di finestre senza pulsanti o icone della barra delle applicazioni
Nel sistema operativo Windows, le finestre create con i tipi
utility
o
lightweight
non compaiono nella barra delle applicazioni. Anche le finestre invisibili non compaiono nella barra delle applicazioni.
Poiché la finestra iniziale è necessariamente del tipo
normal
, per creare un'applicazione senza alcuna finestra visualizzata nella barra delle applicazioni, chiudete la finestra iniziale o lasciatela invisibile. Potete chiudere tutte le finestre nell'applicazione senza terminarla impostando la proprietà
autoExit
dell'oggetto NativeApplication su
false
prima di chiudere l'ultima finestra. Per impedire che la finestra iniziale diventi visibile, potete aggiungere
<visible>false</visible>
all'elemento
<initalWindow>
del file descrittore dell'applicazione (senza impostare la proprietà
visible
su
true
né chiamare il metodo
activate()
della finestra).
Nelle nuove finestre aperte dall'applicazione, potete impostare la proprietà
type
dell'oggetto NativeWindowInitOption passato alla funzione di costruzione della finestra su
NativeWindowType.UTILITY
o
NativeWindowType.LIGHTWEIGHT
.
In Mac OS X, le finestre ridotte a icona vengono visualizzate sulla barra delle applicazioni del dock. Per impedire la visualizzazione delle icone ridotte a icona, potete nascondere la finestra anziché ridurla a icona. L'esempio seguente intercetta un evento change
nativeWindowDisplayState
e lo annulla se la finestra viene ridotta a icona. Il gestore di eventi imposta invece la proprietà
visible
della finestra su
false
:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
Se una finestra viene ridotta a icona sul dock Mac OS X quando impostate la proprietà
visible
su
false
, l'icona del dock non viene rimossa. Un utente può ancora fare clic sull'icona per far riapparire la finestra.
|
|
|