「Android 2.x」VS「Android 3.x」
前回の「Android 3.0の新APIで簡単ドラッグ&ドロップ実装」と前々回の「開発者が知って得するAndroid 2.3の新機能18選」で触れましたが、現在のAndroidは、スマートフォン向けの2.x系とタブレット向けの3.x系が同時にメンテナンス・リリースされている状態です。それぞれを採用した端末も次々とリリースされています。
| VS |
2.x系はオープンソースの名の下に「kernel.org」でソースコードが公開されていますが、3.x系のソースコードは公開されていません。
![]() |
| 図1 2011年8月1日時点のAndroidソースコードのタグ状況(2.xまでしか公開されていない) |
- - PR -
スマートフォン向けとタブレット向けで、Androidのバージョンがフォークしてしまった最大の要因は画面サイズにあります。Androidのコンセプトである「1つのActivityが画面を占有する」という振る舞いは、タブレットの大き過ぎる画面にはマッチせず、3.xでは考え直さざるを得なかったわけです。
■ 待たれる「Ice Cream Sandwich」
このスマートフォン向けとタブレット向けで使用されるOSが異なるという状況は、次期Android OSである「Ice Cream Sandwich」で統合して解決される見込みです。Ice Cream Sandwichは画面サイズに応じてアプリの画面がスケールし、スマートフォン向け、タブレット向けに同一のアプリで対応できるようになります。

Google mobile revolution:「Ice Cream Sandwich」のチラ見せも―ジョン・ラーゲリン氏が語るAndroidの展望 - ITmedia +D モバイル via kwout
■ Android 3.0新機能「Fragments」と「Android Compatibility Package」
現時点でも、3.x系で追加された機能は2.x系以前にフィードバックされており、開発者が任意で、その機能を使用可能です。それを可能にするのが、「Android Compatibility Package」です(参考:Google、非Honeycombアプリにタブレット向けUIを追加するツールを発表 - ITmedia エンタープライズ)。
Ice Cream Sandwichで画面サイズに応じてアプリ画面がスケールする仕組みは、Honeycomb(Android 3.0)から追加された新機能「Fragments」によって実現できると考えられ、Android Compatibility Packageは、まさにFragmentsを「Gingerbread(Android 2.3)」以前で使用可能にする仕組みです。
今回は「Fragmentsとは何か」から、その使い方までを解説し、次回はAndroid Compatibility Packageの使い方を解説します。
今回のサンプルアプリは以下よりダウンロード可能です。動作させながら読み進めることをお勧めします。
Activity内にUIや振る舞いを分割「Fragments」とは
Fragmentsとは、Activity内にUIや振る舞いを分割する仕組みです。
■ 例で見る画面サイズによる振る舞いの違い
直感的に理解してもらうために、1つ例を挙げます。Gingerbread以前では、リストのActivityから選択した詳細内容を、別のActivityとして表示するために、画面遷移を必要としていました。
![]() |
| 図2 スマートフォンでの画面遷移イメージ |
Honeycombはタブレット向けであるため「画面が広い」という前提で、リストActivityと詳細表示Activityを同じ画面に表示します。その方が表示が間延びせずに、かつ快適な操作を提供可能です。
![]() |
| 図3 ブックマークととウェブサイトを同時に表示 |
ただし、AndroidはActivityが画面を構成する基本要素になっているため、単にActivityを同一画面に複数並べられません。そこで登場したのが、Activity内に配置可能な「Fragment」です。
■ 「親フレーム」「子フレーム」
Fragmentは、Activityの内部に配置可能なライフサイクルを持つコンテナで、HTMLでいうところの<frameset>タグと<frame>タグ、MDI(Multiple Document Interface)でいうところの「親フレーム」「子フレーム」のような関係です。
![]() |
| 図4 オレンジ枠がActivity、水色枠がFragment |
Fragmentは、1つが画面を占有することもあれば、画面に複数配置されることもあり、Activityとは若干異なるライフサイクルを持ちます。
Fragmentsが大体理解できたところで、次ページからは、Fragmentのライフサイクルについて学んでいきましょう。
| Index | ||||||||
|
||||||||
Androidで動く携帯Javaアプリ作成入門 バックナンバー 連載インデックスへ»
- 第1回 Android Market配布を目指しEclipseでHelloWorld!
- 第2回 Androidアプリ作成の基本“Activity”とは何か?
- 第3回 ブラウザや地図、ストリートビューの基、Intentとは?
- 第4回 簡単でワクワクするAndroidウィジェット10連発!
- 第5回 Androidアプリの使いやすさを左右する5つのレイアウト
- 第6回 AndroidでSQLiteのDB操作をするための基礎知識
- 第7回 常駐アプリが作成できるAndroidの“サービス”とは
- 第8回 アプリを国際化してAndroid Marketから世界へ発信
- 第9回 Netbookにも広まるAndroidで、かつてないWeb体験を
- 第10回 Androidのホーム画面に常駐するアプリを作るには
- 第11回 Android 1.6のジェスチャーとテキスト読み上げを使う
- 第12回 SurfaceViewならAndroidで高速描画ゲームが作れる
- 第13回 iPhoneより多彩なAndroidのセンサをアプリで操作
- 第14回 Android 2.1の新機能で作る、美しく燃える“待ち受け”
- 第15回 Android NDKでJNIを使用してアプリを高速化するには
- 第16回 地図/位置情報/GPSを使うAndroidアプリを作るには
- 第17回 もはやケータイに必須のカメラをAndroidで制御しよう
- 第18回 開発者が知っておきたいAndroid 2.2新機能 12連発
- 第19回 XMLレイアウトでAndroidアプリに“設定画面”を追加
- 第20回 Androidアプリで“アニメーション”するための基礎知識
- 第21回 アニメーションでAndroidに独創的な画面エフェクトを
- 第22回 開発者が知って得するAndroid 2.3の新機能18選
- 第23回 Android 3.0の新APIで簡単ドラッグ&ドロップ実装
- 第24回 Androidの画面の大きさの違いを解決するFragments
- 第25回 Compatibility packageで2.x系でもマルチサイズ対応
- 第26回 開発者が知らないと損するAndroid 4.0の新機能44選
- 第27回 Android 4.0でアプリ開発を始めるための環境構築
- 第28回 Android 4.0で注目の顔認識をアプリに組み込むには
- 第29回 Androidのウィジェットにノーティフィケーションするには
- 第30回 Androidアプリでマルチメディアを扱うための基礎知識
- 第31回 Android 4.0のサービス/プロセス間通信の基本
| ご意見、ご感想は Smart&Social 会議室へどうぞ |
| Smart&Social フォーラム トップページへ |
TechTargetジャパン
- JenkinsでCIすればAndroidアプリ開発はもう怖くない (2012/5/23)
Androidアプリ開発における継続的インテグレーションの重要性やJenkinsの利点を解説し、環境構築の仕方や使い方の手順を紹介します - Open Graphアプリを作りApp Centerに登録するには (2012/5/18)
ユーザーの活動を共有できるFacebookの新機能を使ったアプリの開発方法と新しいアプリストアへの登録手順を解説 - Bootstrap、Hogan.js、FinagleなどTwitter系OSS (2012/5/15)
Twitterのアーキテクチャやオープンソースへの取り組みなどの講演模様をお届け。OpenJDKやStorm、Gizzard、Twitter4Jも注目 - ソーシャルゲーム/スマホ開発イベント記事が人気 (2012/5/11)
4月はソーシャルゲームの開発者向けイベントや、Webとネイティブの対決が熱かった! UnityやPerfumeも見逃せない!?
|
|
キャリアアップ
スポンサーからのお知らせ
イベントカレンダー
- - PR -







