AIR의 작업 표시줄 아이콘

Adobe AIR 1.0 이상

많은 운영 체제에서 응용 프로그램을 나타내는 아이콘이 포함될 수 있는 Mac OS X 도크와 같은 작업 표시줄을 제공합니다. Adobe® AIR®에서는 NativeApplication.nativeApplication.icon 속성을 통해 응용 프로그램 작업 표시줄 아이콘과 상호 작용하기 위한 인터페이스를 제공합니다.

작업 표시줄 아이콘

AIR에서는 NativeApplication.nativeApplication.icon 객체를 자동으로 만듭니다. 객체 형식은 운영 체제에 따라 DockIcon 또는 SystemTrayIcon입니다. NativeApplication.supportsDockIconNativeApplication.supportsSystemTrayIcon 속성을 사용하여 이러한 InteractiveIcon 하위 클래스 중에서 AIR이 현재 운영 체제에서 지원하는 하위 클래스를 확인할 수 있습니다. InteractiveIcon 기본 클래스는 아이콘에 사용되는 이미지를 변경하는 데 사용할 수 있는 width, heightbitmaps 속성을 제공합니다. 그러나 잘못된 운영 체제에서 DockIcon 또는 SystemTrayIcon과 관련된 속성에 액세스하면 런타임 오류가 생성됩니다.

아이콘에 사용되는 이미지를 설정하거나 변경하려면 하나 이상의 이미지가 포함된 배열을 만들어 NativeApplication.nativeApplication.icon.bitmaps 속성에 할당합니다. 작업 표시줄 아이콘의 크기는 운영 체제에 따라 다를 수 있습니다. 크기 조절로 인한 이미지 품질 저하를 방지하려면 여러 크기의 이미지를 bitmaps 배열에 추가하면 됩니다. 둘 이상의 이미지를 제공하는 경우 AIR에서는 작업 표시줄 아이콘의 현재 표시 크기에 가장 가까운 크기를 선택하고 필요한 경우에만 크기를 조절합니다. 다음 예제에서는 두 이미지를 사용하여 작업 표시줄 아이콘의 이미지를 설정합니다.

NativeApplication.nativeApplication.icon.bitmaps =  
            [bmp16x16.bitmapData, bmp128x128.bitmapData]; 

아이콘 이미지를 변경하려면 새 이미지가 하나 이상 포함된 배열을 bitmaps 속성에 할당합니다. enterFrame 또는 timer 이벤트에 대한 응답으로 이미지를 변경하여 아이콘에 애니메이션을 적용할 수 있습니다.

Windows 및 Linux의 알림 영역에서 아이콘을 제거하거나 Mac OS X에서 기본 아이콘 모양을 복원하려면 bitmaps를 빈 배열로 설정합니다.

NativeApplication.nativeApplication.icon.bitmaps = []; 

도크 아이콘

AIR에서는 NativeApplication.supportsDockIcontrue일 때 도크 아이콘을 지원합니다. NativeApplication.nativeApplication.icon 속성은 도크의 응용 프로그램 아이콘을 나타냅니다(윈도우 도크 아이콘이 아님).

참고: AIR에서는 Mac OS X에서 도크의 윈도우 아이콘을 변경하는 작업을 지원하지 않습니다. 또한 응용 프로그램 도크 아이콘의 변경은 응용 프로그램이 실행되는 동안에만 적용됩니다. 응용 프로그램이 종료되면 아이콘이 일반 모양으로 되돌아갑니다.

도크 아이콘 메뉴

명령이 포함된 NativeMenu 객체를 만들어 NativeApplication.nativeApplication.icon.menu 속성에 할당하여 표준 도크 메뉴에 명령을 추가할 수 있습니다. 메뉴의 항목은 표준 도크 아이콘 메뉴 항목 위에 표시됩니다.

도크 튀어오르게 하기

NativeApplication.nativeApplication.icon.bounce() 메서드를 호출하여 도크 아이콘을 튀어오르게 할 수 있습니다. bounce() priority 매개 변수를 informational로 설정하면 아이콘이 한 번 튀어오릅니다. 이 매개 변수를 critical로 설정하면 사용자가 응용 프로그램을 활성화할 때까지 아이콘이 튀어오릅니다. priority 매개 변수의 상수는 NotificationType 클래스에 정의되어 있습니다.

참고: 응용 프로그램이 이미 활성화되어 있으면 아이콘이 튀어오르지 않습니다.

도크 아이콘 이벤트

도크 아이콘을 클릭하면 NativeApplication 객체가 invoke 이벤트를 전달합니다. 응용 프로그램이 실행 중이 아니면 시스템에서 응용 프로그램을 시작하고, 그렇지 않으면 invoke 이벤트가 실행 중인 응용 프로그램 인스턴스에 전달됩니다.

시스템 트레이 아이콘

AIR에서는 NativeApplication.supportsSystemTrayIcontrue일 때(Windows 및 대부분의 Linux 배포판에서 현재 유일한 경우임) 시스템 트레이 아이콘을 지원합니다. Windows 및 Linux에서 시스템 트레이 아이콘은 작업 표시줄의 알림 영역에 표시됩니다. 기본적으로 아이콘이 표시되지 않습니다. 아이콘을 표시하려면 BitmapData 객체가 포함된 배열을 아이콘의 bitmaps 속성에 할당합니다. 아이콘 이미지를 변경하려면 새 이미지가 포함된 배열을 bitmaps에 할당합니다. 아이콘을 제거하려면 bitmapsnull로 설정합니다.

시스템 트레이 아이콘 메뉴

NativeMenu 객체를 만들어 NativeApplication.nativeApplication.icon.menu 속성에 할당하여 시스템 트레이 아이콘에 메뉴를 추가할 수 있습니다(기본 메뉴가 운영 체제에서 제공되지 않음). 시스템 트레이 아이콘 메뉴에 액세스하려면 아이콘을 마우스 오른쪽 버튼으로 클릭합니다.

시스템 트레이 아이콘 도구 설명

tooltip 속성을 설정하여 아이콘에 도구 설명을 추가합니다.

NativeApplication.nativeApplication.icon.tooltip = "Application name"; 

시스템 트레이 아이콘 이벤트

NativeApplication.nativeApplication.icon 속성이 참조하는 SystemTrayIcon 객체는 click, mouseDown, mouseUp, rightClick, rightMouseDownrightMouseUp 이벤트에 대한 ScreenMouseEvent를 전달합니다. 이러한 이벤트를 아이콘 메뉴와 함께 사용하여 사용자가 표시되는 윈도우가 없는 응용 프로그램과 상호 작용하게 할 수 있습니다.

예제: 윈도우가 없는 응용 프로그램 만들기

다음 예제에서는 시스템 트레이 아이콘이 있지만 표시되는 윈도우가 없는 AIR 응용 프로그램을 만듭니다. 응용 프로그램 설명자에서 응용 프로그램의 visible 속성을 true로 설정하지 않아야 합니다. 설정할 경우 응용 프로그램이 시작될 때 해당 창이 표시됩니다.

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]; 
        } 
    } 
} 
참고: Flex WindowedApplication 구성 요소를 사용하는 경우 WindowedApplication 태그의 visible 특성을 false로 설정해야 합니다. 이 특성은 응용 프로그램 설명자의 설정을 대체합니다.
참고: 이 예제에서는 응용 프로그램의 icons 하위 디렉토리에 AIRApp_16.pngAIRApp_128.png라는 이미지 파일이 있다고 가정합니다. 프로젝트 폴더에 복사할 수 있는 샘플 아이콘 파일이 AIR SDK에 포함되어 있습니다.

윈도우 작업 표시줄 아이콘 및 버튼

일반적으로 윈도우를 아이콘으로 표현한 항목은 사용자가 배경 윈도우나 최소화된 윈도우에 쉽게 액세스할 수 있도록 도크나 작업 표시줄의 윈도우 영역에 표시됩니다. Mac OS X 도크에는 응용 프로그램의 아이콘과 최소화된 각 윈도우의 아이콘이 표시됩니다. Microsoft Windows 및 Linux 작업 표시줄에는 응용 프로그램의 각 일반 유형 윈도우에 대한 프로그램 아이콘과 제목이 포함된 버튼이 표시됩니다.

작업 표시줄 윈도우 버튼 강조 표시

윈도우가 배경에 있으면 윈도우와 관련된 이벤트가 발생했음을 사용자에게 알릴 수 있습니다. Mac OS X에서는 도크 튀어오르게 하기에서 설명한 대로 응용 프로그램 도크 아이콘을 튀어오르게 하여 사용자에게 알릴 수 있습니다. Windows 및 Linux에서는 NativeWindow 인스턴스의 notifyUser() 메서드를 호출하여 윈도우 작업 표시줄 버튼을 강조 표시할 수 있습니다. 이 메서드에 전달된 type 매개 변수는 알림의 긴급도를 결정합니다.

  • NotificationType.CRITICAL: 사용자가 윈도우를 전경으로 가져올 때까지 윈도우 아이콘이 깜박입니다.

  • NotificationType.INFORMATIONAL: 윈도우 아이콘이 색상을 변경하여 강조 표시됩니다.

    참고: Linux에서는 informational 유형의 알림만 지원되므로 둘 중 어느 유형의 값을 notifyUser() 함수에 전달해도 같은 효과를 냅니다.

    다음 문은 윈도우의 작업 표시줄 버튼을 강조 표시합니다.

    stage.nativeWindow.notifyUser(NotificationType.CRITICAL); 

    윈도우 수준 알림을 지원하지 않는 운영 체제에서 NativeWindow.notifyUser() 메서드를 호출하면 아무 효과가 없습니다. 윈도우 알림이 지원되는지 확인하려면 NativeWindow.supportsNotification 속성을 사용합니다.

작업 표시줄 버튼이나 아이콘이 없는 윈도우 만들기

Windows 운영 체제에서 utility 또는 lightweight 유형으로 만든 윈도우는 작업 표시줄에 나타나지 않습니다. 표시되지 않는 윈도우도 작업 표시줄에 나타나지 않습니다.

윈도우가 작업 표시줄에 표시되지 않는 응용 프로그램을 만들려면 초기 윈도우가 normal 유형이어야 하므로 초기 윈도우를 닫거나 표시되지 않게 두어야 합니다. 응용 프로그램을 종료하지 않고 응용 프로그램의 모든 윈도우를 닫으려면 마지막 윈도우를 닫기 전에 NativeApplication 객체의 autoExit 속성을 false로 설정합니다. 초기 윈도우가 계속 표시되지 않게 하려면 응용 프로그램 설명자 파일의 <initalWindow> 요소에 <visible>false</visible>를 추가합니다(visible 속성을 true로 설정하거나 윈도우의 activate() 메서드를 호출하지 않음).

응용 프로그램에서 연 새 윈도우에서 윈도우 생성자에 전달된 NativeWindowInitOption 객체의 type 속성을 NativeWindowType.UTILITY 또는 NativeWindowType.LIGHTWEIGHT로 설정합니다.

Mac OS X에서는 최소화된 윈도우가 도크 작업 표시줄에 표시됩니다. 윈도우를 최소화하는 대신 숨겨서 최소화된 아이콘이 표시되지 않게 할 수 있습니다. 다음 예제에서는 nativeWindowDisplayState 변경 이벤트를 수신하고 윈도우가 최소화되는 중이면 최소화를 취소합니다. 대신 핸들러는 윈도우 visible 속성을 false로 설정합니다.

private function preventMinimize(event:NativeWindowDisplayStateEvent):void{ 
    if(event.afterDisplayState == NativeWindowDisplayState.MINIMIZED){ 
        event.preventDefault(); 
        event.target.visible = false; 
    } 
} 

visible 속성을 false로 설정할 때 Mac OS X 도크에서 윈도우가 최소화되면 도크 아이콘이 제거되지 않습니다. 사용자는 여전히 아이콘을 클릭하여 윈도우를 다시 표시할 수 있습니다.