Wiele systemów operacyjnych udostępnia pasek zadań, taki jak Dock w systemie Mac OS X, który może zawierać ikony reprezentujące aplikacje. Środowisko Adobe® AIR® udostępnia interfejs służący do interakcji z ikoną aplikacji na pasku zadań za pośrednictwem właściwości
NativeApplication.nativeApplication.icon
.
Informacje o ikonach paska zadań
Środowisko AIR automatycznie tworzy obiekt
NativeApplication.nativeApplication.icon
. Typem obiektu jest DockIcon albo SystemTrayIcon, w zależności od systemu operacyjnego. Korzystając z właściwości
NativeApplication.supportsDockIcon
i
NativeApplication.supportsSystemTrayIcon
, można określić, którą z tych podklas klasy InteractiveIcon środowisko AIR obsługuje w bieżącym systemie operacyjnym. Klasa bazowa InteractiveIcon udostępnia właściwości
width
,
height
i
bitmaps
, których można używać do zmiany obrazu ikony. Jednak próba dostępu do właściwości charakterystycznych dla klasy DockIcon lub SystemTrayIcon w niewłaściwym systemie operacyjnym spowoduje zgłoszenie błędu w czasie wykonywania.
Aby ustawić lub zmienić obraz ikony, należy utworzyć tablicę zawierającą jeden lub większą liczbę obrazów, i przypisać tę tablicę do właściwości
NativeApplication.nativeApplication.icon.bitmaps
. Rozmiary ikon paska narzędzi mogą być różne w różnych systemach operacyjnych. Aby uniknąć pogorszenia jakości obrazu wskutek skalowania, można dodać do tablicy
bitmaps
wiele obrazów o różnych rozmiarach. W wypadku udostępnienia więcej niż jednego obrazu środowisko AIR wybiera rozmiar najbliższy aktualnemu rozmiarowi wyświetlanej ikony paska zadań, a skaluje obraz tylko wtedy, gdy jest to konieczne. W poniższym przykładzie ustawiany jest obraz ikony paska narzędzi. Przypisywana jest tablica zawierająca dwa obrazy:
NativeApplication.nativeApplication.icon.bitmaps =
[bmp16x16.bitmapData, bmp128x128.bitmapData];
Aby zmienić obraz ikony, należy przypisać tablicę zawierającą nowy obraz lub obrazy do właściwości
bitmaps
. Możliwe jest animowanie ikony poprzez zmianę obrazu w odpowiedzi na zdarzenie
enterFrame
lub
timer
.
Aby usunąć ikonę z obszaru powiadomień w systemie Windows i Linux lub przywrócić domyślny wygląd ikony w systemie Mac OS X, należy przypisać właściwości
bitmaps
pustą tablicę:
NativeApplication.nativeApplication.icon.bitmaps = [];
Ikony Docku
Środowisko AIR obsługuje ikony Docku, gdy właściwość
NativeApplication.supportsDockIcon
ma wartość
true
. Właściwość
NativeApplication.nativeApplication.icon
reprezentuje ikonę aplikacji w Docku (a nie ikonę okna w Docku).
Uwaga:
Środowisko AIR nie umożliwia zmiany ikon okien w Docku w systemie Mac OS X. Ponadto zmiana ikony aplikacji w Docku obowiązuje tylko w czasie, gdy aplikacja jest uruchomiona — po zakończeniu działania aplikacji przywracany jest normalny wygląd ikony.
Menu ikon Docku
Istnieje możliwość dodawania poleceń do standardowego menu Docku. Należy w tym celu utworzyć obiekt NativeMenu zawierający polecenia i przypisać go do właściwości
NativeApplication.nativeApplication.icon.menu
. Elementy w menu będą wyświetlane powyżej standardowych elementów menu ikony Docku.
Podskakiwanie ikony w Docku
Można wymusić podskakiwanie ikony Docku, wywołując metodę
NativeApplication.nativeApplication.icon.bounce()
. W wypadku ustawienia parametru
bounce() priority
na wartość informational ikona podskoczy jeden raz. W wypadku ustawienia tego parametru na wartość cirtical, ikona będzie podskakiwać, dopóki użytkownik nie uaktywni aplikacji. Stałe dla parametru
priority
są zdefiniowane w klasie NotificationType.
Uwaga:
Ikona nie podskakuje, jeśli aplikacja jest już aktywna.
Zdarzenia związane z ikonami Docku
Kliknięcie ikony Docku powoduje wywołanie zdarzenia
invoke
przez obiekt NativeApplication. Jeśli aplikacja nie działa, system ją uruchomi. W przeciwnym razie zdarzenie
invoke
zostanie dostarczone do działającej instancji aplikacji.
Ikony zasobnika systemowego
Środowisko AIR obsługuje ikony zasobnika systemowego, gdy właściwość
NativeApplication.supportsSystemTrayIcon
jest równa
true
. Ten warunek jest obecnie spełniony tylko w systemie Windows oraz w większości dystrybucji systemu Linux. W systemie Windows i Linux ikony zasobnika systemowego są wyświetlane w obszarze powiadomień na pasku zadań. Domyślnie ikona nie jest wyświetlana. Aby wyświetlić ikonę, należy przypisać tablicę zawierającą obiekty BitmapData do właściwości
bitmaps
ikony. Aby zmienić obraz ikony, należy przypisać tablicę zawierającą nowe obrazy do właściwości
bitmaps
. Aby usunąć ikonę, należy przypisać właściwości
bitmaps
wartość
null
.
Menu ikon zasobnika systemowego
Istnieje możliwość dodania menu do ikony zasobnika systemowego. W tym celu należy utworzyć obiekt NativeMenu i przypisać go do właściwości
NativeApplication.nativeApplication.icon.menu
(system operacyjny nie udostępnia menu domyślnego). Dostęp do menu ikony w zasobniku systemowym uzyskuje się, klikając ikonę prawym przyciskiem myszy.
Podpowiedzi narzędzi ikony zasobnika systemowego
Aby dodać do ikony podpowiedź narzędzia, należy ustawić jej właściwość tooltip:
NativeApplication.nativeApplication.icon.tooltip = "Application name";
Zdarzenia związane z ikonami zasobnika systemowego
Obiekt SystemTrayIcon, do którego odwołuje się właściwość NativeApplication.nativeApplication.icon, wywołuje zdarzenie ScreenMouseEvent w odpowiedzi na zdarzenia
click
,
mouseDown
,
mouseUp
,
rightClick
,
rightMouseDown
i
rightMouseUp
. Można wykorzystać te narzędzia, wraz z menu ikony, aby stworzyć użytkownikom możliwość interakcji z aplikacją, gdy aplikacja nie wyświetla widocznych okien.
Przykład: tworzenia aplikacji bez okien
W poniższym przykładzie tworzona jest aplikacja AIR, która ma ikonę w zasobniku systemowym, ale nie ma widocznych okien. (Właściwości
visible
aplikacji nie należy ustawiać na
true
w deskryptorze aplikacji, gdyż spowodowało by to uwidocznienie okna aplikacji od razu po jej uruchomieniu).
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];
}
}
}
Uwaga:
Korzystając z komponentu Flex WindowedApplication, należy ustawić atrybut
visible
znacznika WindowedApplication na
false
. Ten atrybut przesłania ustawienie określone w deskryptorze aplikacji.
Uwaga:
W przykładzie przyjęto, że w podkatalogu
icons
aplikacji istnieją pliki obrazów o nazwach
AIRApp_16.png
i
AIRApp_128.png
. (Przykładowe pliki ikon, które można skopiować do własnego folderu projektu, są dołączone do pakietu AIR SDK).
Ikony i przyciski okien na pasku zadań
W obszarze okien na pasku zadań lub Docku wyświetlane są zazwyczaj ikonograficzne reprezentacje okien, które umożliwiają użytkownikom szybki dostęp do tła lub zminimalizowanych okien. W Docku systemu Mac OS X wyświetlane są ikony aplikacji oraz ikony wszystkich zminimalizowanych okien. Na paskach zadań systemu Microsoft Windows i Linux wyświetlane są przyciski wszystkich zwykłych okien aplikacji. Każda ikona zawiera ikonę programu i tytuł okna.
Podświetlanie przycisku okna na pasku zadań
Gdy okno znajduje się w tle, można poinformować użytkownika o zajściu zdarzenia związanego z tym oknem. W systemie Mac OS X takie powiadomienie użytkownika jest realizowane poprzez wywołanie podskakiwania ikony aplikacji w Docku (co opisano w sekcji
Podskakiwanie ikony w Docku
). W systemie Windows i Linux można podświetlić przycisk okna na pasku narzędzi, wywołując metodę
notifyUser()
instancji klasy NativeWindow. Parametr
type
przekazany do metody określa, jak pilne jest powiadomienie:
-
NotificationType.CRITICAL
: ikona okna miga, dopóki użytkownik nie przeniesie okna na pierwszy plan.
-
NotificationType.INFORMATIONAL
: ikona okna jest podświetlana poprzez zmianę koloru.
Uwaga:
W systemie Linux obsługiwany jest jedynie typ informacyjny powiadomień. Przekazanie innej wartości typu do funkcji
notifyUser()
wywoła ten sam efekt.
Poniższa instrukcja podświetla przycisk okna na pasku zadań:
stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
Wywołanie metody
NativeWindow.notifyUser()
w systemie operacyjnym, który nie obsługuje powiadamiania na poziomie okien, nie odnosi żadnego skutku. Aby sprawdzić, czy powiadamianie jest obsługiwane, należy skorzystać z właściwości
NativeWindow.supportsNotification
.
Tworzenie okien bez przycisków lub ikon na pasku zadań
W systemie operacyjnym Windows okna, przy których tworzeniu zadeklarowano typ
utility
lub
lightweight
, nie są widoczne na pasku zadań. Na pasku zadań nie pojawiają się także okna niewidoczne.
Ponieważ pierwsze okno aplikacji zawsze jest typu
normal
, aby utworzyć aplikację bez widocznych okien na pasku zadań, należy zamknąć pierwsze okno lub pozostawić je w stanie niewidocznym. Aby zamknąć wszystkie okna aplikacji, nie kończąc jej działania, należy ustawić właściwość
autoExit
obiektu NativeApplication na
false
przed zamknięciem ostatniego okna. Aby zapobiec uwidacznianiu pierwszego okna aplikacji, wystarczy dodać wpis
<visible>false</visible>
do elementu
<initalWindow>
w pliku deskryptora aplikacji (i nie ustawiać właściwości
visible
na
true
ani nie wywoływać metody
activate()
okna).
W nowych oknach otwieranych przez aplikację należy przypisywać właściwości
type
obiektu NativeWindowInitOption przekazanego do konstruktora okna wartość
NativeWindowType.UTILITY
lub
NativeWindowType.LIGHTWEIGHT
.
W systemie Mac OS X okna zminimalizowane są wyświetlane na pasku zadań w Docku. Można zapobiec wyświetlaniu ikon okien zminimalizowanych, ukrywając okna, zamiast je minimalizować. Poniższy przykład ilustruje wykrywanie zdarzeń zamiany
nativeWindowDisplayState
i anulowanie zdarzenia, jeśli okno jest minimalizowane. Program obsługi ustawia natomiast właściwość
visible
okna na
false
:
private function preventMinimize(event:NativeWindowDisplayStateEvent):void{
if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){
event.preventDefault();
event.target.visible = false;
}
}
Jeśli okno jest zminimalizowane do Docku systemu Mac OS X, to po ustawieniu właściwości
visible
na
false
ikona z Docku nie jest usuwana. Użytkownik może kliknąć ikonę i spowodować ponowne wyświetlenie okna.
|
|
|