2011年2月23日水曜日

Android 3.0 Platform - 1 -

長いので分割します。
ここには、以下が含まれます。

 ・Fragments
 ・Action Bar
 ・System clipboard
 ・Drag and drop

Android 3.0 Platform - 1 -
Android 3.0 Platform - 2 -
Android 3.0 Platform - 3 -

---------------------------

Android 3.0 Platform

API Level: 11

Android 3.0 platform が Android SDK としてダウンロードできるようになりました。ダウンロードできる platform には Andorid のライブラリとシステムイメージ、エミュレータのスキンなどが含まれますが、外部ライブラリは含まれません。

Android 3.0 の開発とテストを開始するには Android SDK Manager を使って platform をあなたの SDK にダウンロードしてください。より詳しい情報は Adding SDK Components を見てください。もし Android 開発が初めてなら、 download the SDK Starter Package から初めてください。

Android 3.0 のよりハイレベルの紹介は Platform Highlights を見てください。

Note: すでに Android アプリケーションを公開している場合、できる限り早く、あなたのアプリケーションを Android 3.0 でテストし最適化してください。あなたのアプリケーションが最新の Android-powered デバイスでベストな体験ができることをユーザーに確約すべきです。そのために何ができるかのより詳しい情報は Optimizing Apps for Android 3.0 を見てください。

---------------------------

API Overview

以下のセクションは Android 3.0 で新しく追加された機能・以前のAPIから変更された内容のテクニカルオーバービューです。

---------------------------

Fragments

Fragment は新しいフレームワークコンポーネントです。これにより、自身の UI とライフサイクルを定義した self-contained なモジュールに Activityの異なるのエレメントを分離することができます。Fragment を作成するには、Fragment クラスを継承し、Activity に似たいくつかのライフサイクルコールバックメソッドを実装しなければなりません。複数の Fragment を合わせることで、1つの Activity 内で multi-pane UI を作成することができ、各 pane が自身のライフサイクルとユーザーの入力を管理します。

さらに、UIを提供しないで Fragment を使い、Activity が走っている間だけ発生する download の進捗管理など、Activity 用の worker として使用することができます。

加えて:

 ・Fragment は self-contained で複数の Activity で再利用できる。

 ・Activity 内で、Fragment の追加、削除、置換、アニメーションが可能。

 ・Activity によって管理される back stack に Fragment を追加でき、変更時に Fragment の状態を保存するので、ユーザーは様々な状態を介して前後に移動できる。

 ・代替レイアウトを提供する(providing alternative layouts) ことで、画面サイズおよび向きに応じて Fragment を混ぜたり合わせたりできる

 ・Fragment はそれらの含む Activity への直接アクセスを持っているので、Activity の Action Bar (次で述べる) のアイテムに寄与できる。

Activity 内で Fragment を管理するには FragmentManager を使う必要があります。これは、Fragment とインタラクトするいくつかの API を提供します。例えば、Activity 内の Fragment を見つけたり、以前の状態をリストアするために back stack へ Fragment を pop したりできます。

Fragment の追加や削除などの transaction を行うには、FragmentTransaction を生成する必要があります。その後、add(), remove(), replace() などのメソッドを呼ぶことで transaction を実行できます。transaction に対して行いたい全ての変更を適用するには、commit() メソッドを呼ばなければなりません。そうするとシステムが Fragment の transaction を Activity に適用します。

Fragment を使用するためのより詳しい情報は、Fragments ドキュメントを読んでください。いくつかのサンプルは API Demos アプリケーションにあります。

---------------------------

Action Bar

Action Bar は Activity Window の上部にあったこれまでのタイトルバーを置き換えるものです。これはアプリケーションのロゴを左隅に含み、Option Menu 内のアイテムへの新しいインタフェースを提供します。加えて、Action Bar は次のことが可能です。

 ・"action items" として Action Bar に直接メニューアイテムを追加することができる

  メニューアイテムの XML 定義で、android:showAsAction 属性に "ifRoom" を設定します。十分な room がある場合、メニューアイテムは Action Bar に直接表示されます。そうではない場合、Action Bar の右側にあるメニューアイコンで表示される overflow メニュー内に配置されます。

 ・"action view" を作成することで、検索ボックスのようなウィジェットに action item を置き換えられる

  メニューアイテムの XML 定義で、android:actionViewLayout 属性にレイアウトリソースを指定し、android:actionViewClass 属性にウィジェットのクラス名を指定します(Action Bar にアイテムが現れるように android:showAsAction 属性も定義しなければなりません)。Action Bar に十分な room がなくアイテムが overflow メニューに表示される場合、それはこれまでのメニューアイテムのように振る舞い、ウィジェットは表示されません。

 ・アプリケーションロゴにアクションを追加し、カスタムロゴに置き換える

  アプリケーションロゴは自動的に android.R.id.home ID が割り当てられ、タッチされたときシステムから Activity の onOptionItemSelected() コールバックに渡されます。コールバックメソッド内でこの ID に単純に応答することで、アプリケーションの "home" Activity へ移動するなどのアクションを実装できます。

  ロゴをアイコンに置き換えるには、マニフェストファイル内で android:logo 属性にロゴを指定します。そうすると、Activity で setDisplayUseLogoEnabled(true) が呼ばれます。

 ・Fragment の back stack へのナビゲーションとしてパンくずリストを追加する

 ・Fragment へのナビゲーションとしてタブもしくは drop-down list を追加する

 ・テーマと背景で Action Bar をカスタマイズする

Action Bar は新しい holographic theme を使う全てのアプリケーションにとって標準です。つまり android:minSdkVersion もしくは android:targetSdkVersion"11" に設定されている場合にとって標準になります。

Action Bar のより詳しい情報は、Action Bar ドキュメントを読んでください。いくつかのサンプルは API Demos アプリケーションにあります。

---------------------------

System clipboard

アプリケーションは system-wide クリップボードへデータ(単なるテキストを超えて)コピー&ペーストできるようになりました。クリップボードデータはプレーンテキストやURI、Intent も可能です。

content provider を通して、ユーザーにコピーさせたいデータへのシステムアクセスを提供することで、ユーザーは複雑なコンテント(画像やデータ構造など)をあなたのアプリケーションからコピーし、そのコンテントタイプをサポートする別のアプリケーションにペーストすることができます。

クリップボードを使うには、まず getSystemService(CLIPBOARD_SERVICE) を呼んで、グローバルの ClipboardManager オブジェクトを取得します。

クリップボードにアイテムをコピーするには、新しい ClipData オブジェクトを生成し、単一のエンティティが記述された 1つ以上の ClipData.Item をそれに保持させる必要があります。1つの ClipData.Item を含むだけの ClipData オブジェクト を作成する場合、newPlainText(), newUri(), newIntent() などのヘルパーメソッドを使うことができます。これらはあなたが提供した ClipData.Item を pre-loaded して ClipData オブジェクトを返します。

ClipData をクリップボードに追加するには、ClipboardManager のインスタンスの setPrimaryClip() メソッドで ClipData を渡します。

そうすると、ClipboardManager の getPriimaryClip() を呼ぶことでクリップボードからファイルを読むことができます。あなたが受け取る ClipData のハンドリングは複雑になる可能性があります。そのため、実際に張り付ける前にクリップボード内のデータタイプがハンドルできるかどうか確認する必要があります。

クリップボードはクリップするデータの一欠片(つまり ClipData オブジェクト) しか保持することができません。しかし、一つの ClipData は複数の ClipData.Item を含むことができます。

より詳しい情報は Copy and Paste ドキュメントを読んでください。また、コピー&ペーストの簡単な実装は API Demos に、より複雑な実装は Note Pad アプリケーションで見ることができます。

---------------------------

Drag and drop

新しい API はあなたのアプリケーションのユーザーインタフェースでのドラッグ&ドロップ操作を単純化します。ドラッグ操作はある場所から別の場所へいくつか種類のデータ転送(ClipData オブジェクト内で運ばれる)です。ドラッグ操作の開始と終了地点は View です。そのため、ドラッグ&ドロップ操作を直接ハンドルする API は View クラス内にあります。

ドラッグ&ドロップ操作は ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED, ACTION_DROP などの、いくつかのドラッグアクション(DragEvent オブジェクトで定義される)で定義されたライフサイクルを持ちます。ドラッグ操作に携わりたい各 View はこれらのアクションを listen することができます。

あなたの Activity でコンテンツのドラッグを開始するには、View の startDrag() を呼びます。これはドラッグするデータを表す ClipData オブジェクト提供します。View.DragShadowBuilder によって、ユーザーがドラッグしている間指の下に見える "shadow" を簡単に作ることができます。startDrag() で提供される Object はドラッグするオブジェクトの情報を、受け取る view との間で共有することができます。

View で ドラッグされたオブジェクトを許可する ("drop" を受け取る) には、setOnDragListener() を呼んで view に OnDragListener をレジストします。view 上でドラッグイベントが起こると、システムは OnDragListener に対して onDrag() を呼びます。これは、発生したドラッグアクションのタイプ (ACTION_DRAG_STARTED, ACTION_DRAG_ENTERED, ACTION_DROP など)が記述された DragEvent を受け取ります。ドラッグイベントのストリームを配信するために、ドラッグの間システムは繰り返しドラッグ下にある view に対して onDrag() を呼びます。受け取る view は onDragEvent() に運ばれるイベントタイプを DragEvent の getAction() を呼ぶことで問い合わせることができます。


Note: ドラッグイベントは ClipData オブジェクトを運びますが、これはシステムのクリップボードとは関係ありません。ドラッグ&ドロップ操作はドラッグしているデータをシステムのクリップボードに入れることはありません。

より詳しい情報は、Dragging and Dropping ドキュメントを読んでください。ドラッグ&ドロップの実装は API Demos アプリケーションと Honeycomb Gallery アプリケーションで見ることができます。


 

0 件のコメント:

コメントを投稿