Flex Hero のモバイルアプリ開発の基本

“Hero”は、モバイル向けに最適化されたsparkコンポーネントを追加した、次期FlexSDKのコードネームです。
Flash Builder Burrito (Preview) をインストールすると、”Hero”が入ってます。
今回は、Burrito を使った Android アプリ開発の基本的な内容をまとめました。

Flexモバイルの基本構成

Burrito には、新しいプロジェクトタイプとして「Flexモバイルプロジェクト」が追加されています。
このプロジェクトで新規作成すると、<s:MobileApplication>という新アプリケーションクラスのmxmlファイルと、
初期表示される<s:View>のmxmlファイルが生成されます。
モバイルアプリの基本構成としては、主に以下の4つの要素です。

・View

コンテンツの表示領域で、端末の回転に合わせて表示領域が自動調整される
*プロパティ

  • destructionPolicy:画面遷移でViewの破棄をしない場合は”none”を指定
  • actionBarVisible:ActionBarの表示・非表示
  • overlayControls:ActionBarをViewのコンテンツに重ねて表示するか

・ActionBar

Viewの上部に表示されるナビゲーション領域で、さらに3つの領域に別れている

*出典:Adobe

  • Navigator area:ホームボタンなど、View共通のナビゲート用コンテンツを配置
  • Title area:各Viewのタイトル表示や、検索用テキスト入力フィールド等を配置
  • Action area:各Viewでのアクション用コンテンツを配置

・ViewNavigator

スタックベースの履歴管理を行う

  • navigator.pushView(NextViewClassName,data):次の画面へ
    *dataに次の画面に渡したい値をセットする
  • navigator.pop():前の画面へ(最新の画面を消す)
  • navigator.popAll():全部消す
  • navigator.popToFirstView():最初の画面へ

*遷移する度にViewが破棄される

・MobileApplication

ViewNavigatorを1つ持ち、アプリケーションの終了時にビューステートとデータを保存する
*プロパティ

  • splashScreeImage:スプラッシュ画面の設定
  • firstView:初期画面の設定

・参考
「Flex SDK 「Hero」とFlash Builder 「Burrito」を使用したモバイルアプリケーション開発」
「Adobe MAX 2010 RETWEET – Flex 4.5 (Hero)による モバイルアプリケーション開発」
「Hero Mobile Feature Specifications」

利用できるモバイル用の機能

Flex Hero でのモバイルアプリ開発はAIR2.5を対象としており、
AIR2.5では、以下のようなモバイル用のAPIが追加されています。

  • Screen orientation:画面の向き
  • CameraRoll/CameraUI:カメラロール/カメラ
  • SystemIdleMode:アイドルモード移行設定
  • Accelerometer:加速度センサー
  • Geolocation:ジオロケーション
  • タッチ、マルチタッチ、ジェスチャー API
  • StageWebView:モバイルアプリ内にHTMLを埋め込み表示

…など

ただし、セキュリティやプライバシーに影響を及ぼす可能性のある機能は、
権限をアプリケーション記述子(-app.xml)に指定しておく必要があります。
また、デスクトップで利用できるAPIの一部は、モバイルでは使用不可な場合があります。
詳細は、参考ページをご覧ください。

・参考
「Adobe AIR 2.5 開発者向けリリースノート」
「デバイスプロファイル」

最適化されたコンポーネント

HeroはまだPreview版なので、モバイル最適化されたコンポーネントの数も少ないです。

*出典:Adobe

Control

  • Button
  • CheckBox
  • Image/BitmapImage
  • Label
  • List
  • RadioButton / RadioButtonGroup
  • TextArea
  • TextInput

Layout

  • DataGroup
  • Group/HGroup/VGroup
  • TileGroup
  • Scroller

Charts

  • すべて(mx.swcとdatavisualization.swcをライブラリパスに追加)

その他のSparkコンポーネントも使用できますが、スキン等でタッチ操作に適したサイズにするなどの手間が必要です。
MXコンポーネントの使用は推奨されていません。

・参考
「Flex SDK 「Hero」とFlash Builder 「Burrito」を使用したモバイルアプリケーション開発」
「Flex Hero and Mx Charts」

デバッグについて

Burrito では、デスクトップ上と端末上のデバッグが選択できます。
ただし、デスクトップ上でのデバッグでは、各種センサー系やカメラ等はサポートされません。
端末上でデバッグする場合は、「AndroidのSetting>Applications>Development>USB debugging」を有効にして、
USB接続を行います。サポートされるデバイスは、Android 2.2 (Froyo)上に、AIR 2.5 ランタイムが動作する端末です。

・Burrito がデフォルトで提供するUSBドライバ

  • Google Nexus One
  • Motorola Droid
  • HTC Incredible
  • Motorola Droid 2
  • Motorola Droid X
  • HTC Evo 4G

*これ以外を追加する場合は、<Adobe Flash Builder Burrito Home>\utilities\drivers\android\android_winusb.inf
を編集する
*詳細は「Connecting Google Android Devices」

・trace文

端末でのデバッグ中のtrace文を出力するには、ターミナルで以下のコマンドを実行

adb logcat air.MyApp:I *:S

Related Post

Flex Hero のモバイルアプリ開発でハマった点Flex Hero のモバイルアプリ開発でハマった点

「Flex Hero のモバイルアプリ開発の基本」では、ホントの基本のみのご紹介でした。今回は、実際に使ってみてハマった点をいくつかご紹介したいと思います。*なお、この記事は公開されているFlash Builder Buritto Preview版 を対象としています。 画面回転時のレイアウト

Flex4でアイコン付きのカスタムボタンを作るFlex4でアイコン付きのカスタムボタンを作る

みなさん、Flex4(spark)は使ってますか?今回の記事では、よく使うアイコン付きButtonコンポーネントをFlex4で作ってみたいと思います。 Flex3ではiconプロパティに、画像パスをセットしてあげればアイコンが表示できましたが、Flex4のButtonにはiconプロパティがありませんので、カスタムButtonSkinを作成して、アイコンを実装します。 完成図はこんな感じです。表示するLabelも複数行にしました。 ■ButtonSkinクラスの構成カスタムButtonSkinの作成は、新規MXMLスキンでホストコンポーネントを(spark)Buttonにセットして生成できます。すると、デフォルトのButtonSkinクラスがコピーされるので、ここにiconを表示するパーツを追加します。MXMLで編集できるので、デザインビューで確認しながらスキンをカスタマイズできます。追加する前に、デフォルトのButtonSkinの構成をまとめてみます。 1:ホストコンポーネント <!– host component

すぐに使えるFlexコネタ集すぐに使えるFlexコネタ集

昨日のおしゃれFxug勉強会にお越しいただいたみなさま、ありがとうございました。勉強会での発表より、ドリームページで使ったFlexコネタ集を。 1.scaleプロパティの活用 なんの変哲もないよく見かけるscaleプロパティを使った小技。Scaleを少し変更するだけで、同じインスタンスも素敵に変身します。 【Window領域に合わせた拡大表示】大きなディスプレイを使っている人は、Windowもめいいっぱい広げて使いたいもの。Flexでは表示サイズに合わせた%指定やパディングの指定もできすが、座標計算をして表示しているコンポーネントの場合、Windowサイズが変更されるときにいちいち計算をしなおすのは面倒。そんなときは、今のWindowサイズにおける表示可能領域とそのコンポーネントのサイズを比較して、何%拡大可能か計算します。それをscaleにセットするだけで、簡単にリキッド・レイアウトが実現できます。 【一覧表示】一覧表示や、Mini Map表示ならスケールダウン。scaleを小さく設定するだけでミニチュアコンポーネントが作れます。ミニチュアながらも機能はそのまま!なのがかわいらしい。必要に応じてステータスを変更しいらない機能は無効化しましょう。 scaleを変更するだけでいいので簡単です。インスタンスを使いまわせば経済的ですし、下手な計算なロジックを書いてバグを埋め込む心配もなし! 2.ドラッグプロキシーの活用