Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Adobe AIRデベロッパーセンター /

Android 向け AIR アプリケーションと画面の回転の実現 パート 1

著者 上条 晃宏氏

上条 晃宏氏

Content

作成日

8 March 2011

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

必要条件

ユーザーレベル

すべて

必要な製品

  • Flash Professional CS5 (Download trial)
  • Flash Builder 4 (Download trial)
  • Adobe AIR SDK

AIR 2.5 では Android 向けのアプリケーションを開発できるようになりました。スマートフォンやタブレットは、画面を縦にしたり横にしたりと向きを変えて使うことが可能ですが、 AIR では、デバイス用にに、画面の向きにあわせてスクリーン内の表示をコントロールする手段がいくつか提供されています。この記事では、デバイスの向きの変化 に応じて 、AIR アプリケーションの表示を変更する方法をご紹介します。

  • Android 向け AIR アプリケーションと画面の回転の実現 パート 1
  • Android 向け AIR アプリケーションと画面の回転の実現 パート 2

必要な環境

  • Adobe Flash Professional CS5 Extension for AIR 2.5
    Adobe Labs からダウンロードしてインストール

  • Android デバイス
    Android 2.2 以降がインストールされているもの

概要

AIR アプリケーションの表示をコントロールするには、2つの "向き" を使います。1   つ目は、デバイス自身の向きです。デバイスの縦向き、横向き、あるいは上下逆さまといった状態を指します。2 つ目は、デバイス内に表示される   "ステージ"   の向きです。これは、デバイスの向きを基準にした相対的な方向です。例えば、デバイスが左横を向いていてステージがデフォルト表示だと、ユーザーからはア  プリケーションが左側に倒れているように見えます。下の図の真ん中の状態です。

デバイス上向き/ステージデフォルト
デバイス上向き/ステージデフォルト
デバイス左向き/ステージデ フォルト
デバイス左向き/ステージデ フォルト
デバイス左向き/ステージ右向き
デバイス左向き/ステージ右向き

デバイスの向きは、デバイスを持つ人 (あるいは置かれた状態) により決定されます。その際、ステージの向きを自動回転させるよう設定された AIR アプリケーションは、ステージがユーザーから見て正常な (上向きの) 状態になるよう、自動的に表示が調整されます。

自動回転が行われたとき、スクリプト内ではデバイスの向きを Stage クラスの deviceOrientation 属性から知ることができます。deviceOrientation の値は、StageOrientation クラスに定数として定義されています。

  • DEFAULT : デフォルト(上向き)
  • ROTATED_LEFT : 左向き
  • ROTATED_RIGHT : 右向き
  • UPSIDE_DOWN : 上下が逆
  • UNKNOWN : 不明

自動回転が有効でないときの値は UNKNOWN です。deviceOrientation 属性は読み取り専用で、スクリプトから変更することはできません。

ステージの向きの変更を検知するため、2 種類の StageOrientationEvent が追加されました。

  • ORIENTATION_CHANGING : ステージが新しい向きに変わる前に発行される
  • ORIENTATION_CHANGE : ステージが新しい向きに変わった後に発行される

前者は、ステージの向きが変わる前に必要な処理、後者は、ステージの向きが変わった後に必要な処理を実行するのに役立ちます。Android では、後者のみ利用することができます。

ステージの向きは、Stage クラスの orientation 属性から取得できます。取り得る値は、deviceOrientation 属性と同じで、現在のステージが縦長か横長かなどを知ることができます。ステージの向きが確定する前は、値として UNKNOWN をとります。その場合は、StageOrientationEvent が発生してから値を再度確認します。この属性も読み取り専用です。

ステージの向きを変えるために、setOrientation() メソッドが用意されています。引数に StageOrientation クラスに定義されている UNKNOWN をのぞく 4 つの定数のいずれかを指定すると、直ぐにステージの向きが変わります。ただし、このメソッドは、AIR 2.5 ではサポートされません。最新のヘルプファイルには、Android 向けに AIR 2.6 以降でサポート予定と書かれています。

stage.setOrientation(StageOrientation.ROTATED_LEFT);

AIR 2.5 では、代わりに setAspect() メソッドを使って、ステージの向きの縦長横長を切り替えることができます。引数に指定できる値は、StageAspectRatio.PORTRAIT か StageAspectRatio.LANDSCAPE です。下は使い方の例です。

stage.setOrientation(StageAspectRatio.PORTRAIT);

ステージの向きの自動変更

AIR 2.5 には、デバイスの向きに応じて、自動的にステージを回転させる機能があります。この機能を利用するためには、アプリケーション記述ファイル内に、以下の様な行を追加します。Flash Professioanl CS5 からは、パブリッシュ設定画面の一般タブ内で、"自動回転を有効にする" を選択しておけば、アプリケーション記述ファイルを編集する必要はありません。

<application xmlns="http://ns.adobe.com/air/application/2.5"> ... <initialWindow> ... <autoOrients>true</autoOrients> ... </initialWindow> ... </application>

この方法では、特にロジックを記述しなくても、ステージ上の表示オブジェクトが上を向く方向にステージが回転します。しかし、表示幅やアスペクト比 の違いまでは調整されません。例えば、デバイスを横に回転させたとき、アプリケーション画面が幅に合わせて拡大されたり、下に隠れたエリアを表示するため のスクロールバーが追加されたりはしません。そのため、ステージが回転したときに、オブジェクトの大きさやレイアウトを変更するためのロジックが必要にな ります。

ステージが回転すると、ステージの大きさが変更されるため、Stage オブジェクトが resize イベントを送出します。このタイミングでステージ上の表示オブジェクトのサイズと位置を変更すると、常にステージの大きさに合わせた表示ができるので便利です。

下は、resize イベントに対するハンドラーを使用する簡単なサンプルです。配置をスクリプトから設定する場合は、Stage の align 属性と scaleMode 属性を以下のように設定します。scaleMode に NO_SCALE を設定すると、最初にステージが表示されるタイミングで resize イベントが発生するため、表示の調整は resize イベントハンドラー内に集約すると確実に実行されます。

// stage オブジェクトの属性を設定 stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; // resize イベントのハンドラーを追加 stage.addEventListener(Event.RESIZE, onResize); private function onResize(e:Event):void { ... }

Flex の次期バージョンである Hero では、このようなロジックを記述しなくても、自動的に画面幅に合わせて表示を調整する機能があります。デバイス環境では、アプリケーションフレームワークの必要性が高くなりそうです。

アプリケーション起動後に自動変更に変える

アプリケーション起動時には、デバイスの向きに関わらず特定の方向で表示させて、その後、自動変更の機能を利用して表示を調整したい、というケースもあるかもしれません。そのような場合は、まず、アプリケーション記述ファイル内の autoOrients を false にします。Flash Pro CS5 では、パブリッシュ設定画面内の "自動回転を有効にする" のチェックを外しておきます。

<application xmlns="http://ns.adobe.com/air/application/2.5"> ... <initialWindow> ... <autoOrients>false</autoOrients> ... </initialWindow> ... </application>

表示の向きは、aspectRatio タグを使って指定します。指定できる値は、portrait と landscape で、それぞれ、縦長表示、横長表示の意味です。下は縦長表示にしたいときの指定例です。Flash Pro CS5 を利用する場合は、パブリッシュ設定画面の一般タブ内の "起動時の縦横比" から "縦長モード" か "横長モード" を選択します。

<application xmlns="http://ns.adobe.com/air/application/2.5"> ... <initialWindow> ... <autoOrients>false</autoOrients> <aspectRatio>portrait</aspectRatio> ... </initialWindow> ... </application>

これで、初期表示の方向が指定できました。常に表示方向を固定したい場合であれば、このままにしておけばよいわけです。

アプリケーション記述ファイル内の autoOrients の値は、Stage クラスの autoOrients 属性に設定されます。上で説明した設定をすれば、アプリケーション起動時の autoOrients の値は false になっているはずです。初期表示が行われた後に autoOrients の値を true に変更すると、ステージの向きが自動回転するよう変更されます。変更のタイミングは、activate イベント (Flex では applicationComplete イベント) が最初の機会になる場合が多いでしょう。下は autoOrients を変更するコードの例です。

// イベントハンドラーを追加 NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, onActivate); private function onActivate(event:Event):void { // 自動回転するように設定 stage.autoOrients = true; }

逆に、autoOrients の値を true から false に変更した場合の動作はデバイスに依存します。そのままステージの向きが固定されるケースもあれば、デバイス標準の向きに固定されるケースもあるようです。

ステージの向きを固定する別の手段として、 StageOrientationEvent.ORIENTATION_CHANGING イベントのオブジェクトに対して preventDefault() メソッドを呼ぶという方法も考えられます。しかし、先に記述したように Android ではこのイベントが発生しません。従って、こちらは、あまり汎用性のない方法ということになりそうです。

// イベントハンドラーを追加 stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, onOrientationChanging); private function onOrientationChanging(event:StageOrientationEvent):void { // ステージの回転をキャンセル event.preventDefault(); }

パート 2 に続く

Tutorials and samples

Tutorials

  • Using the GameCenter Adobe AIR native extension for iOS
  • Using the iAd Adobe AIR native extension for iOS
  • Easy Library
  • Introducing Adobe AIR Launchpad

Samples

  • Licensing Adobe AIR applications on Android
  • Using web fonts with Adobe AIR 2.5
  • Using Badger for Adobe AIR applications

AIR blogs

More
05/15/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2 Slides and...
05/14/2012 Adobe Flash Platform Runtime and SDK Archives
05/14/2012 Monster’s Socks on the iPad with Adobe AIR
05/10/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2

AIR Cookbooks

More
02/09/2012 Using Camera with a MediaContainer instead of VideoDisplay
01/20/2012 Skinnable Transform Tool
01/18/2012 Recording webcam video & audio in a flv file on local drive
12/12/2011 Date calculations using 'out-of-the-box' functions

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement