(57)【要約】  本開示の少なくともいくつかの実施形態は、デバイスのディスプレイ上に表示された表示領域、ウインドウ、またはビューをアニメ化するための方法を含む。この方法は、少なくとも２つのアニメーションを開始することを含む。この方法は、各アニメーションの進行を決定することをさらに含む。この方法は、単一のタイマに基づいて各アニメーションを完了させることをさらに含む。【特許請求の範囲】
【請求項１】
少なくとも２つのアニメーションを開始すること、
各アニメーションの進行を決定すること、および
単一のタイマに基づいて前記少なくとも２つのアニメーションのそれぞれを同期することを含む、デバイスのディスプレイ上で表示されたビューをアニメ化するためのマシンによって実施される方法。
【請求項２】
前記単一のタイマは、前記ディスプレイに関連するハードウェアの再描画間隔に基づくタイマを含む請求項１に記載の方法。
【請求項３】
各アニメーションの進行を決定することは、進行が生じた場合、前記アニメーションの現在の進行を計算することを含む請求項１に記載の方法。
【請求項４】
各アニメーションがデレゲートに関連付けられているかどうかを判定すること、および
各デレゲートに通知することをさらに含む請求項１に記載の方法。
【請求項５】
前記アニメーションは、変換アニメーションを含む請求項１に記載の方法。
【請求項６】
前記アニメーションは、フレーム・アニメーションを含む請求項１に記載の方法。
【請求項７】
前記アニメーションは、不透明度アニメーションを含む請求項１に記載の方法。
【請求項８】
前記デバイスは、データ処理デバイス、ポータブル・デバイス、ポータブル・データ処理デバイス、マルチタッチ・デバイス、マルチタッチ・ポータブル・デバイス、無線デバイス、およびセル電話機の１つである請求項１に記載の方法。
【請求項９】
実行されると、
少なくとも２つのアニメーションを開始すること、
各アニメーションの進行を決定すること、および
単一のタイマに基づいて前記少なくとも２つのアニメーションのそれぞれを同期することを含む方法をデータ処理システムに実行させる実行可能プログラム命令を格納しているマシン可読媒体。
【請求項１０】
前記単一のタイマは、前記ディスプレイに関連するハードウェアの再描画間隔に基づくタイマを含む請求項９に記載の媒体。
【請求項１１】
各アニメーションの進行を決定することは、進行が生じた場合、前記アニメーションの現在の進行を計算することを含む請求項９に記載の媒体。
【請求項１２】
各アニメーションがデレゲートに関連付けられているかどうかを判定すること、および
各デレゲートに通知することをさらに含む請求項９に記載の媒体。
【請求項１３】
前記データ処理システムは、データ処理デバイス、ポータブル・デバイス、ポータブル・データ処理デバイス、マルチタッチ・デバイス、マルチタッチ・ポータブル・デバイス、無線デバイス、およびセル電話機の１つである請求項９に記載の媒体。
【請求項１４】
ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において、
少なくとも２つのアニメーションを開始するための手段と、
各アニメーションの進行を決定するための手段と、
単一のタイマに基づいて少なくとも２つのアニメーションのそれぞれを同期するための手段とを含む装置。
【請求項１５】
ユーザ・インタフェース・アニメータによって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化することを含む、データ処理デバイスのディスプレイ上に表示されるアニメーションのためのマシンによって実施される方法。
【請求項１６】
前記アニメーションは、変換アニメーション、フレーム・アニメーション、および不透明度アニメーションを含む請求項１５に記載の方法。
【請求項１７】
実行されると、ユーザ・インタフェース・アニメータによって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化することを含む方法をデータ処理システムに実行させる実行可能プログラム命令を格納しているマシン可読媒体。
【請求項１８】
ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において、ユーザ・インタフェース・アニメータによって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化するための手段を含む装置。
【請求項１９】
グラフィックス・ユニットの再描画間隔に関連するタイミング信号によって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化することを含む、デバイスのディスプレイ上に表示されるアニメーションのためのマシンによって実施される方法。
【請求項２０】
前記アニメーションは、変換アニメーション、フレーム・アニメーション、および不透明度アニメーションを含む請求項１９に記載の方法。
【請求項２１】
前記デバイスは、データ処理デバイス、ポータブル・デバイス、ポータブル・データ処理デバイス、マルチタッチ・デバイス、マルチタッチ・ポータブル・デバイス、無線デバイス、およびセル電話機の１つである請求項１９に記載の方法。
【請求項２２】
実行されると、グラフィックス・ユニットの再描画間隔に関連するタイミング信号によって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化することを含む方法をデータ処理システムに実行させる実行可能プログラム命令を格納しているマシン可読媒体。
【請求項２３】
ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において、グラフィックス・ユニットの再描画間隔に関連するタイミング信号によって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化するための手段を含む装置。
【請求項２４】
ユーザ入力を受け取るように構成された入力パネルと、
前記入力パネルと一体化されたディスプレイ・デバイスと、
少なくとも前記ユーザ入力に基づいてオブジェクトを作成してアニメ化するように構成された、前記入力パネルに結合された中央処理装置と、
前記オブジェクトを格納するように構成された、前記プロセッサに結合されたメモリと、
前記入力パネル上、または前記入力パネル近くのユーザ入力の動きを検出するための命令と、前記ユーザ入力を検出したことに応答して、前記ディスプレイ・デバイス上に表示された１つまたは複数のビューをアニメ化するための命令と、単一のタイマに基づいて、前記ディスプレイ・デバイス上に表示された前記１つまたは複数のビューの前記アニメ化を完了するための命令とを含む、前記メモリの中に格納され、前記１つまたは複数のプロセッサによって実行されるように構成された１つまたは複数のプログラムとを含むデバイス。
【請求項２５】
前記単一のタイマは、前記ディスプレイの再描画間隔に基づくタイマを含む請求項２４に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、アニメーションをもたらすアプリケーション・プログラミング・インタフェースに関する。
【０００２】
（コンピュータ・プログラム・リスト）
本特許文書の開示の一部分は、著作権保護の対象となる資料を含む。著作権所有者は、特許商標局の特許ファイルまたは特許記録に現れるとおり、本特許文書または本特許開示を何人が複製することにも異議を唱えないが、それ以外の全著作権を留保する。
【０００３】
本出願は、添付された付録Ａとして含まれるコンピュータ・プログラム・リストとともに提出された。
【背景技術】
【０００４】
ＡＰＩは、ソフトウェア・アプリケーションからのサービスを求める要求をサポートするためにコンピュータ・システムまたはプログラム・ライブラリが提供するソース・コード・インタフェースである。ＡＰＩは、データがメモリの中でどのようにレイアウトされるかについての明示的な低レベルの記述ではなく、インタープリタ型である、つまり、アプリケーションが構築される際にコンパイルされるプログラミング言語によって規定される。ＡＰＩによって記述される機能をもたらすソフトウェアは、ＡＰＩの実装と言われる。
【０００５】
電子デバイス、コンピューティングシステム、ポータブル・デバイス、およびハンドヘルド・デバイスなどの様々なデバイスが、ソフトウェア・アプリケーションを有する。ＡＰＩは、ソフトウェア・アプリケーションとユーザ・インタフェース・ソフトウェアの間のインタフェースとなって、デバイスのユーザにいくつかのフィーチャおよびオペレーションを提供する。ユーザは、デバイスのディスプレイに関して、スクロール・オペレーション、選択オペレーション、ジェスチャリング・オペレーション、およびアニメ化オペレーションなどの、いくつかのオペレーションを所望する可能性がある。
【０００６】
スクロールは、スクリーンまたはディスプレイ・ウインドウにわたって、テキスト、図面、またはイメージなどのコンテンツの方向付き（例えば、水平または垂直）プレゼンテーションをスライドさせる動作である。通常のグラフィカル・ユーザ・インタフェースにおいて、スクロールは、スクロールバーの助けを借りて、または、しばしば、矢印キーであるキーボード・ショートカットを使用して行われる。ジェスチャリングは、２つ以上の入力ポイントを有するタイプのユーザ入力である。アニメ化オペレーションは、所与の期間内にコンテンツを変化させることを含む。
【０００７】
様々なタイプのデバイスは、デバイスの使い易さを制限する、限られた表示サイズ、ユーザ・インタフェース能力、ソフトウェア能力、ＡＰＩインタフェース能力、および／または処理能力を有する可能性がある。デバイスのユーザ・インタフェースは、要求された機能およびフィーチャを提供するためにＡＰＩを実装する。これらのユーザ・インタフェースは、様々なタイプのユーザ入力を解釈すること、およびユーザ入力に関連する、意図される機能を提供することに困難を有する可能性がある。
【発明の概要】
【０００８】
本開示の少なくともいくつかの実施形態は、ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において、１つまたは複数のアプリケーション・プログラミング・インタフェースを含む。様々なファンクション・コールまたはメッセージが、ユーザ・インタフェース・ソフトウェアとソフトウェア・アプリケーションの間のアプリケーション・プログラミング・インタフェースを介して転送される。例示的なアプリケーション・プログラミング・インタフェースは、デバイスに関するスクロール・オペレーション、ジェスチャリング・オペレーション、およびアニメ化オペレーションを実施するファンクション・コールを転送する。
【０００９】
本開示の少なくともいくつかの実施形態は、デバイスのディスプレイ上に表示された表示領域、ウインドウ、またはビューをアニメ化するための方法を含む。この方法は、少なくとも２つのアニメーションを開始することを含む。この方法は、各アニメーションの進行を決定することをさらに含む。この方法は、単一のタイマに基づいて各アニメーションを完了させることをさらに含む。
【００１０】
本開示の少なくともいくつかの実施形態は、ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境を含む。この環境においてＡＰＩ（アプリケーション・プログラミング・インタフェース）を介して動作するための方法は、ラバーバンド・コールを転送することを含む。表示領域内でスクロールされる領域をラバーバンド化することは、スクロールされる領域が、或るディスプレイ・エッジを超えた際に、所定の最大変位量だけ行われる。この方法は、ディスプレイの少なくとも１つのエッジ（例えば、上エッジおよび下エッジ、左エッジおよび右エッジ）に関する変位値を設定するエッジ・ラバーバンド・コールを転送することをさらに含む。
【００１１】
本開示の少なくともいくつかの実施形態は、デバイスのディスプレイに関するジェスチャ・オペレーションを含む。ジェスチャ・オペレーションは、２つ以上の入力ポイントを有するユーザ入力に応答して、ズームインまたはズームアウトなどの拡大縮小変換を実行することを含む。また、ジェスチャ・オペレーションは、２つ以上の入力ポイントを有するユーザ入力に応答して、イメージまたはビューを回転させる回転変換を実行することも含む。
【００１２】
本開示の少なくともいくつかの実施形態は、デバイスのディスプレイに関してアニメーションを実行するための方法を含む。この方法は、少なくとも１つのアニメーションを開始することを含む。この方法は、各アニメーションの進行を決定することをさらに含む。この方法は、単一のタイマに基づいて各アニメーションを完了させることをさらに含む。この単一のタイマは、ディスプレイ・ハードウェアの再描画間隔に基づくことが可能である。
【００１３】
また、以上の方法の１つまたは複数を実行する様々なデバイス、ならびに、処理システムによって実行されると、これらの方法を処理システムに実行させるマシン可読媒体も説明される。
【００１４】
また、他の方法、デバイス、およびマシン可読媒体も説明される。
【００１５】
本開示は、添付の図面を参照して例として説明される。
【図面の簡単な説明】
【００１６】
【図１】データ処理デバイスのユーザ入力に応答するための方法を示す流れ図である。
【図２】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図３】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図４】タッチセンシティブ・ディスプレイ４０８を有するポータブル電子デバイス４００のユーザ・インタフェースの実施形態を示す概略図である。
【図５Ａ−５Ｃ】タッチセンシティブ・ディスプレイを有するポータブル電子デバイス４００のユーザ・インタフェースの少なくともいくつかの実施形態を示す図である。
【図６Ａ−６Ｄ】一部の実施形態による、項目のリストを、そのリストの終端までスクロールし、終端までスクロールした時点で、この終端を超えた領域が表示され、リストは、その後、この終端を超えた領域がもはや表示されなくなるまで、反対方向にスクロールされることを示す図である。
【図７】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図８】本開示のいくつかの教示による、水平方向または垂直方向にデバイスのディスプレイのスクロールをロックするための第１のスクロール角度、および第２のスクロール角度を示す図である。
【図９】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１０】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１１】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１２】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１３】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１４】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１５】ビューの拡大縮小変換を有するデバイスのディスプレイを示す図である。
【図１６Ａ−１６Ｃ】第１の倍率、および第２の倍率を有するビューを有するデバイスのディスプレイを示す図である。
【図１７】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１８】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図１９】デバイスのディスプレイ上に表示されたビューをアニメ化するための方法を示す流れ図である。
【図２０】デバイスのディスプレイ上に表示されたビューをアニメ化するための方法を示す流れ図である。
【図２１】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【図２２Ａ−２２Ｂ】デバイスのディスプレイのウインドウのサイズ変更を同期することを示す図である。
【図２３】データ処理デバイスのディスプレイ上に表示されたアプリケーションのビューの所有権を切り替えるための方法を示す図である。
【図２４】デバイスのディスプレイ上に表示されたアプリケーションのビューのメモリ管理のための方法を示す図である。
【図２５Ａ−２５Ｂ】或るレイヤがビューに関連付けられているレイヤの階層を有するデータ構造を示す図である。
【図２６】デバイス上で表示するためにユーザ・インタフェースのメディア・コンテンツと非メディア・コンテンツを合成するための方法を示す図である。
【図２７】レイヤの階層を有するデータ構造またはレイヤ・ツリーを示す図である。
【図２８】本開示の一実施形態によるデバイスを示す斜視図である。
【図２９】本開示の一実施形態によるデバイスを示す斜視図である。
【図３０Ａ−３０Ｂ】本開示の実施形態による無線デバイスを示す斜視図である。
【図３１】本開示の実施形態が実施されることが可能なシステムを示すブロック図である。
【図３２】本開示の一実施形態によるデバイスの別の例を示す図である。
【図３３Ａ】本開示の一実施形態による第１の構成（例えば、ラップトップ構成）におけるデバイスを示す斜視図である。
【図３３Ｂ】本開示の一実施形態による第２の構成（例えば、遷移構成）における図３３Ａのデバイスを示す斜視図である。
【図３３Ｃ】本開示の一実施形態による第３の構成（例えば、タブレット構成）における図３３Ａのデバイスを示す斜視図である。
【図３４】本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を示す流れ図である。
【発明を実施するための形態】
【００１７】
本開示の様々な実施形態および態様が、後段で説明される詳細を参照して説明され、添付の図面が、これらの様々な実施形態を示す。以下の説明および図面は、本開示を例示するものであり、本開示を限定するものと解釈されるべきではない。本開示の様々な実施形態の完全な理解をもたらすように、多数の特定の詳細が説明される。しかし、いくつかの場合、よく知られた詳細、または従来の詳細は、本開示の実施形態の簡潔な説明を与えるために説明されない。
【００１８】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内に格納されたデータに対するオペレーションを含むアルゴリズムの点で提示される。アルゴリズムは、一般に、所望される結果をもたらす自己矛盾のない一連のオペレーションである。これらのオペレーションは、通常、物理量の物理的操作を要求する、または伴う。通常、ただし、必然的にではなく、これらの量は、格納され、転送され、組み合わされ、比較され、さらに、それ以外で操作されることが可能な電気信号または磁気信号の形態をとる。ときとして、主に一般的な用法の理由で、これらの信号をビット、値、要素、シンボル、文字、項、数などと呼ぶことが好都合であることが判明している。
【００１９】
しかし、これら、および類似する用語のすべては、適切な物理量に関連付けられるべきであり、単に、これらの量に付けられた便利なラベルに過ぎないことに留意されたい。特に明記しない限り、以下の説明から明らかなとおり、この説明の全体にわたって、「処理すること」、または「算出すること」、または「計算すること」、または「判定すること」、または「表示すること」などの用語を利用する説明は、システムのレジスタもしくはメモリの内部の物理（電子的）量として表されるデータを操作して、システムのメモリもしくはレジスタ、または他のそのような情報記憶デバイス、情報伝送デバイス、もしくは情報表示デバイスの内部の物理量として同様に表される他のデータに変換する、データ処理システム、または類似する電子デバイスのアクションおよびプロセスを指すことが可能であることが認められよう。
【００２０】
本開示は、本明細書で説明されるオペレーションの１つまたは複数を実行するための装置と関係することが可能である。この装置は、特に、要求される目的のために構築されてもよく、あるいはコンピュータの中に格納されたコンピュータ・プログラムによって選択的に活性化される、または再構成される汎用コンピュータを含んでもよい。そのようなコンピュータ・プログラムは、それぞれがバスに結合された、フロッピー（登録商標）・ディスク、光ディスク、ＣＤ−ＲＯＭ、および光磁気ディスクを含むが、以上には限定されない任意のタイプのディスク、ＲＯＭ（読み取り専用メモリ）、ＲＡＭ（ランダム・アクセス・メモリ）、ＥＰＲＯＭ（消去可能なプログラマブルＲＯＭ）、ＥＥＰＲＯＭ（電気的に消去可能なプログラマブルＲＯＭ）、フラッシュ・メモリ、磁気カードもしくは光カード、あるいは電子命令を格納するのに適した任意のタイプの媒体などの、マシン（例えば、コンピュータ）可読記憶媒体の中に格納されることが可能である。
【００２１】
マシン可読媒体には、マシン（例えば、コンピュータ）によって読み取り可能な形態の情報を格納するため、または伝送するための任意の機構が含まれる。例えば、マシン可読媒体には、「ＲＯＭ」（読み取り専用メモリ）、「ＲＡＭ」（ランダム・アクセス・メモリ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュ・メモリ・デバイス、電気形態、光形態、音響形態、またはその他の形態の伝搬される信号（例えば、搬送波、赤外線信号、デジタル信号など）などが含まれる。
【００２２】
本開示の少なくともいくつかの実施形態は、ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境における１つまたは複数のアプリケーション・プログラミング・インタフェースを含む。様々なファンクション・コールまたはメッセージが、ユーザ・インタフェース・ソフトウェアとソフトウェア・アプリケーションの間のアプリケーション・プログラミング・インタフェースを介して転送される。ファンクション・コールまたはメッセージを転送することは、ファンクション・コールまたはメッセージを発行すること、開始すること、呼び出すこと、または受け取ることを含むことが可能である。例示的なアプリケーション・プログラミング・インタフェースは、表示領域を有するデバイスに関してスクロール・オペレーション、ジェスチャリング・オペレーション、およびアニメ化オペレーションを実施するファンクション・コールを転送する。また、ＡＰＩは、パラメータ、変数、またはポインタを有するファンクションを実施することもできる。ＡＰＩは、開示されるパラメータ、またはパラメータの他の組み合わせを受け取ることができる。開示されるＡＰＩに加えて、その他のＡＰＩが個々に、または組み合わせで、開示されるＡＰＩと類似した機能を実行することができる。
【００２３】
表示領域は、或る形態のウインドウである。ウインドウは、境界を有さない可能性がある表示領域であり、ディスプレイの表示領域全体または表示エリア全体であることが可能である。一部の実施形態では、表示領域は、少なくとも１つのウインドウ、および／または少なくとも１つのビュー（例えば、Ｗｅｂコンテンツ、テキスト・コンテンツ、またはイメージ・コンテンツ）を有することが可能である。ウインドウは、少なくとも１つのビューを有することが可能である。開示される方法、システム、および装置は、表示領域、ウインドウ、および／またはビューを使用して実施されることが可能である。
【００２４】
本開示の少なくともいくつかの実施形態は、デバイスのディスプレイをスクロールするためのスクロール・オペレーションを含む。スクロール・オペレーションには、スクロールが完了すると、スクロールされる領域を、スクロールとは反対方向に揺れ戻り開始（バウンス）をさせること、スクロールされる領域が、或るディスプレイ・エッジを超えると、スクロールされる領域を所定の最大変位量だけラバーバンド化すること、および水平方向または垂直方向にスクロールをロックするスクロール角度を設定することが含まれる。
【００２５】
本開示の少なくともいくつかの実施形態は、デバイスのディスプレイに関するジェスチャ・オペレーションを含む。ジェスチャ・オペレーションには、２つ以上の入力ポイントを有するユーザ入力に応答して、ズームインまたはズームアウトなどの拡大縮小変換を実行することが含まれる。また、ジェスチャ・オペレーションには、２つ以上の入力ポイントを有するユーザ入力に応答してイメージまたはビューを回転させる回転変換を実行することも含まれる。
【００２６】
本開示の少なくともいくつかの実施形態は、デバイスのディスプレイに関してアニメーションを実行するための方法を含む。この方法は、少なくとも１つのアニメーションを開始することを含む。この方法は、各アニメーションの進行を決定することをさらに含む。この方法は、単一のタイマに基づいて各アニメーションを完了させることをさらに含む。この単一のタイマは、ディスプレイ・ハードウェアの再描画間隔に基づくことが可能である。
【００２７】
本開示の少なくともいくつかの実施形態は、ポータブル音楽プレーヤおよび／またはビデオ・メディア・プレーヤなどのデジタル・メディア・プレーヤの一部であることが可能であり、デジタル・メディア・プレーヤは、メディアを提示するメディア処理システム、メディアを格納するストレージ・デバイスを含むことが可能であり、アンテナ・システムおよびメディア処理システムに結合されたＲＦ（無線周波数）トランシーバ（例えば、セルラー電話機のためのＲＦトランシーバ）をさらに含むことが可能である。いくつかの実施形態では、リモート・ストレージ・デバイス上に格納されたメディアが、ＲＦトランシーバを介してメディア・プレーヤに伝送されることが可能である。メディアは、例えば、音楽もしくは他のオーディオ、静止画像、または動画の１つまたは複数であることが可能である。
【００２８】
ポータブル・メディア・プレーヤは、カリフォルニア州クーパーチーノ所在のアップル・コンピュータ株式会社からのｉＰｏｄ（登録商標）メディア・プレーヤ上、もしくはｉＰｏｄ  Ｎａｎｏ（登録商標）メディア・プレーヤ上のクリック・ホイール入力デバイス、タッチスクリーン入力デバイス、押しボタン・デバイス、可動ポインティング入力デバイス、または他の入力デバイスなどのメディア選択デバイスを含むことが可能である。メディア選択デバイスは、ストレージ・デバイス上、および／またはリモート・ストレージ・デバイス上に格納されたメディアを選択するのに使用されることが可能である。ポータブル・メディア・プレーヤは、少なくともいくつかの実施形態において、入力デバイスを介して選択され、スピーカもしくはイヤホンを介して、またはディスプレイ・デバイス上で、あるいはディスプレイ・デバイスとスピーカもしくはイヤホンの両方の上で提示されるメディアの題名、または他の標識を表示するようにメディア処理システムに結合されたディスプレイ・デバイスを含むことが可能である。一部の実施形態では、ディスプレイ・デバイスと入力デバイスは統合されるのに対して、他の実施形態では、ディスプレイ・デバイスと入力デバイスは、別々のデバイスである。ポータブル・メディア・プレーヤの例は、参照により本明細書に組み込まれている、「Ａｕｔｏｍａｔｅｄ  Ｒｅｓｐｏｎｓｅ  ｔｏ  ａｎｄ  Ｓｅｎｓｉｎｇ  ｏｆ  Ｕｓｅｒ  Ａｃｔｉｖｉｔｙ  ｉｎ  Ｄｅｖｉｃｅｓ」という題名の米国特許出願第１１／５８６，８６２号、ならびに公開された米国特許出願第２００３／００９５０９６号および米国特許出願第２００４／０２２４６３８号において説明されている。
【００２９】
本明細書で説明される開示の実施形態は、例えば、エンターテイメント・システムもしくはＰＤＡ（パーソナル・デジタル・アシスタント）、または汎用コンピュータ・システムもしくは専用コンピュータ・システム、または別のデバイス内部の組み込み型デバイス、またはメディア・プレーヤを含まないセルラー電話機、またはマルチタッチ・タブレット・デバイス、もしくは他のマルチタッチ・デバイス、あるいはこれらのデバイスの態様または機能を組み合わせるデバイス（例えば、１つのデバイスの中でＰＤＡ，エンターテイメント・システム、およびセルラー電話機と組み合わされた、ｉＰｏｄ（登録商標）などのメディア・プレーヤ）などの、他のタイプのデータ処理システムの一部であることが可能である。本開示において、電子デバイスおよび消費者デバイスは、デバイスのタイプである。
【００３０】
図１は、デバイスのユーザ入力に応答するための方法の流れ図である。方法１００は、ブロック１０２でユーザ入力を受け取ることを含む。ユーザ入力は、入力キー、ボタン、ホイール、タッチ、あるいはデバイスと対話するための他の手段の形態であることが可能である。方法１００は、ブロック１０４で、ユーザ入力に応答してイベント・オブジェクトを作成することをさらに含む。方法１００は、ブロック１０６で、イベント・オブジェクトがスクロール・オペレーションまたはジェスチャ・オペレーションを呼び出すかどうかを判定することをさらに含む。例えば、デバイスのディスプレイにわたって或る距離をドラッグする単一のタッチが、スクロール・オペレーションとして解釈されることが可能である。一実施形態では、ディスプレイの２本以上の指のタッチが、ジェスチャ・オペレーションとして解釈されることが可能である。いくつかの実施形態では、イベント・オブジェクトがスクロール・オペレーションまたはジェスチャ・オペレーションを呼び出すかどうかを判定することは、或る期間にわたってドラッグ・ユーザ入力を受け取ることに基づく。方法１００は、ブロック１０８で、スクロール・オペレーションまたはジェスチャ・オペレーションを呼び出すことに基づいて、少なくとも１つのスクロール・コールまたはジェスチャ・コールを発行することをさらに含む。方法１００は、ブロック１１０で、少なくとも１つのスクロール・コールが発行された場合、そのコールに、スクロールの量に基づいて、イベント・オブジェクトに関連するビュー（例えば、Ｗｅｂコンテンツ、テキスト・コンテンツ、またはイメージ・コンテンツ）を有するウインドウをスクロールすることによって応答することをさらに含み、このスクロールは、ユーザ入力を基準にして所定の位置で停止される。例えば、入力が、デバイスのディスプレイ上の或る位置で終わることが可能である。スクロールは、ユーザから受け取った最後の入力を基準にして所定の位置に到達するまで続くことが可能である。方法１００は、ブロック１１２で、少なくとも１つのジェスチャ・コールが発行された場合、そのコールに、複数の入力ポイントをユーザ入力の形態で受け取ることに基づいて、イベント・オブジェクトに関連するビューを変更することによって応答することをさらに含む。
【００３１】
本開示のいくつかの実施形態において、スクロール・オペレーションは、ディスプレイのコンテンツ・エッジにスクロール・インジケータを付けることを含む。代替として、スクロール・インジケータは、ディスプレイ・エッジに付けられることも可能である。一部の実施形態では、マウス／指ダウンの形態のユーザ入力により、スクロールされる領域のディスプレイ・エッジ上、コンテンツ・エッジ上、またはウインドウ・エッジ上にスクロール・インジケータが表示されるようになる。マウス／指アップが検出された場合、スクロール・インジケータは、スクロールされる領域の表示領域、コンテンツ・エッジ、またはウインドウ・エッジからフェードアウトさせられる。
【００３２】
本開示のいくつかの実施形態では、ジェスチャ・オペレーションには、少なくとも１つのジェスチャ・コールが発行された場合、そのコールに、複数の入力ポイントをユーザ入力の形態で受け取ることに基づいて、イベント・オブジェクトに関連するビューを回転させることによって応答することが含まれる。また、ジェスチャ・オペレーションには、ユーザ入力を受け取ることに基づいてズームインすること、またはズームアウトすることによって、イベント・オブジェクトに関連するビューを拡大縮小することも含まれることが可能である。
【００３３】
一部の実施形態では、デバイスは、複数のビューまたはウインドウを有する表示領域を含む。各ウインドウは、スーパービューおよびサブビューを含む複数のビューを有することが可能である。いずれのウインドウ、ビュー、スーパービュー、またはサブビューに接触が行われるかを、マウス・アップ、マウス・ダウン、またはドラッグなどの形態のユーザ入力によって決定する必要がある。ＡＰＩは、この決定を行うために様々なモードを設定することができる。一実施形態では、パス・モードが、マウス・ダウン入力、マウス・アップ入力、およびドラッグ入力を最も近いサブビューに送る。別の実施形態では、インターセプト・オン・ドラッグ・モードが、ドラッグ入力をスーパービューに送る一方で、マウス・アップ入力およびマウス・ダウン入力は、サブビューに送られる。別の実施形態では、インターセプト・モードが、ドラッグ入力、マウス・アップ入力、およびマウス・ダウン入力のすべてをスーパービューに送る。スーパービューは、ビュー・ソフトウェアのサブクラスとして動作するスクローラ・ソフトウェアであることが可能である。サブビューは、ユーザ・インタフェース・ソフトウェアのサブクラスとして動作するビュー・ソフトウェアであることが可能である。
【００３４】
図２は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースを流れ図形態で示す。アプリケーション・プログラミング・インタフェースは、揺れ戻り（bounce）オペレーションをもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。揺れ戻りオペレーションをもたらすための方法２００は、ブロック２０２で、揺れ戻り設定コール（set bounce call）を転送することを含む。方法２００は、ブロック２０４で、最大揺れ戻り値と最小揺れ戻り値の少なくともいずれかを設定することをさらに含む。最大揺れ戻り値および最小揺れ戻り値は、ユーザ入力を受け取ったウインドウの少なくとも１つのエッジに関連することが可能である。方法２００は、ブロック２０６で、スクロールの終わりに表示領域の中で、スクロールされる領域を超えた領域が目に見えることに基づいて、スクロールの反対方向にスクロールされる領域の揺れ戻りを生じさせることをさらに含む。スクロールされる領域は、コンテンツ領域であることが可能である。
【００３５】
本開示のいくつかの実施形態では、揺れ戻り設定コールを転送することは、揺れ戻り設定コールを発行すること、開始すること、呼び出すことまたは受け取ることのいずれかである。
【００３６】
図３は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、ラバーバンド・オペレーションをもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。ラバーバンド・オペレーションをもたらすための方法３００は、ブロック３０２で、ディスプレイ内に表示されたスクロールされる領域をラバーバンド化することをもたらすラバーバンド・コールを転送することを含む。方法３００は、ブロック３０４で、ディスプレイの少なくとも１つのエッジに関する変位値を設定するエッジ・ラバーバンド・コールを転送することをさらに含む。一部の実施形態では、変位値は、上エッジおよび下エッジに関して、左エッジおよび右エッジに関して、またはすべてのエッジに関して設定される。
【００３７】
方法３００による、スクロールされる領域をラバーバンド化することは、スクロールされる領域が、スクロールに基づいてデバイスのディスプレイのディスプレイ・エッジを超えると、所定の最大変位値だけ行われる。ユーザが、ディスプレイのコンテンツをスクロールして、コンテンツのエッジを超えた領域を、ディスプレイの中で目に見えるようにした場合、変位値が、コンテンツの外側の領域に関する最大量を制限する。スクロールの終わりに、コンテンツは、スライドして戻り、コンテンツの外側の領域をディスプレイ上でもはや目に見えないようにする。
【００３８】
本開示のいくつかの実施形態では、ラバーバンド・コールを転送することは、ラバーバンド・コールを発行すること、開始すること、呼び出すこと、または受け取ることのいずれかである。
【００３９】
図４は、タッチセンシティブ・ディスプレイ４０８を有するポータブル電子デバイス４００のユーザ・インタフェースの実施形態を示す概略図である。ディスプレイ４０８は、ウインドウ４１０を含むことが可能である。ウインドウ４１０は、情報オブジェクト４１２−１ないし４１２−４などの、１つまたは複数の表示されるオブジェクトを含むことが可能である。例示的な実施形態では、情報オブジェクト４１２は、項目のリストの中の１名または複数名の個人に関する連絡先情報に対応することが可能である。表示されるオブジェクトは、ユーザの１本または複数本の指４１６（図４に一律の縮尺に従わずに描かれている）に関連する接触ポイントなどの、ディスプレイに対する接触ポイントの動き４１４を検出する、または特定することに応答して、動かされることが可能である。一部の実施形態では、表示されるオブジェクトの動きは、接触ポイントの加速された動きを検出すること、または特定することに応答して、加速されることが可能である。実施形態４００は、１つのウインドウ４１０を含むが、他の実施形態では、２つ以上のディスプレイ・ウインドウが存在することが可能である。さらに、実施形態４００は、或る特定の方向の動き４１４を示すが、他の実施形態では、表示されるオブジェクトの動きは、他の１つまたは複数の方向の動き４１４に応答すること、またはスカラー（すなわち、方向とは無関係の特定された、または検出された動き）に応答することが可能である。
【００４０】
図５Ａ〜図５Ｃは、デバイス上の項目のリストを、そのリストの終端までスクロールし、終端までスクロールした時点で、そのリストの終わりの１つまたは複数の表示された項目が、ディスプレイの端部に当たって滑らかに揺れ戻り、方向を逆転し、その後、オプションとして停止することを示す。図５Ａは、タッチセンシティブ・ディスプレイを有するポータブル電子デバイス４００のユーザ・インタフェースの実施形態を示す概略図である。情報オブジェクト４１２−１などの１つまたは複数の表示されるオブジェクトは、スクロールされる領域のエッジである項目のリストの終端５１４から距離５１２−１にあることが可能であり、リストがスクロールされている間、速度５１０−１で動いていることが可能である。終端５１４は、ウインドウ４１０および／またはディスプレイ４０８に関連する物理的境界ではなく、表示されるオブジェクトに関連する仮想境界であることに留意されたい。図５Ｂに示されるとおり、情報オブジェクト４１２−１などの１つまたは複数の表示されるオブジェクトが、終端５１４に到達する、または交差すると、スクロールに対応する動きが停止することが可能であり、すなわち、スクロール速度が、瞬間に０であることが可能である。図５Ｃに示されるとおり、情報４１２−１などの１つまたは複数の表示されるオブジェクトは、その後、方向を逆転することが可能である。終端５１４と交差した後の時点で、情報オブジェクト４１２−１は、速度５１０−２を有することが可能であり、終端５１４から距離５１２−２にあることが可能である。一部の実施形態では、速度５１０−２の大きさは、距離５１２−２が距離５１２−１と等しい時点で、速度５１０−１の大きさより小さいことが可能であり、すなわち、１つまたは複数の表示されるオブジェクトの動きは、スクロールするリストが、リストの終端に到達して、「揺れ戻った」後、鈍らせられる。
【００４１】
本開示の少なくとも一部の実施形態において、方法２００は、図５Ａ〜図５Ｃに表される揺れ戻りオペレーションを実行する。ブロック２０２で転送される揺れ戻りコールが、揺れ戻りオペレーションが有効にされるかどうかを決定する。最大揺れ戻り値および最小揺れ戻り値が、スクロールの反対方向における、スクロールされる領域の揺れ戻りの量を決定する。
【００４２】
図６Ａ〜図６Ｄは、一部の実施形態による、項目のリストを、そのリストの終端までスクロールし、終端までスクロールした時点で、この終端を超えた領域が表示され、リストは、その後、この終端を超えた領域がもはや表示されなくなるまで、反対方向にスクロールされることを示す。方法３００のラバーバンド・オペレーションが、リストされる項目が電子メール・メッセージである図６Ａ〜図６Ｄの例に示される。図６Ａ〜図６Ｄは、一部の実施形態による受信ボックスを管理するための例示的なユーザ・インタフェース３５００Ａを示す。同様のユーザ・インタフェースが、他のメールボックス（例えば、下書き、送信済み、ゴミ箱、パーソナルなど）を表示し、管理するのに使用されることが可能である。さらに、インスタント・メッセージ会話のリスト、好みの電話番号のリスト、連絡先情報のリスト、ラベルのリスト、電子メール・フォルダのリスト、電子メール・アドレスのリスト、物理的アドレスのリスト、呼び出し音のリスト、またはアルバム名のリストを含むが、以上には限定されない他のタイプのリストも可能である。
【００４３】
電子メールのリストが、割り当てられたスクリーン・エリアから溢れる場合、ユーザは、タッチスクリーン上で垂直に上向きに、さらに／または垂直に下向きにスワイプするジェスチャを使用して、電子メールをスクロールすることができる。図６Ａの例では、Ｂｒｕｃｅ  Ｗａｌｋｅｒからの最上位に表示される電子メール３５３０、およびＫｉｍ  Ｂｒｏｏｋからの最下位に表示される電子メール３５３２を含む、電子メールのリストの一部分が、スクリーン・エリアの中で表示されている。ユーザは、垂直に下向きにスワイプするジェスチャ３５１４を実行して、リストの最上位に向かってスクロールする。垂直に下向きのジェスチャ３５１４は、正確に垂直でなくてもよく、つまり、実質的に垂直なジェスチャで十分である。一部の実施形態では、所定の角度の範囲内のジェスチャが、完全に垂直であることは、垂直なスクロールをもたらす。
【００４４】
垂直に下向きのジェスチャ３５１４を検出した結果、図６Ｂにおいて、表示される電子メールは、下に移動して、Ｋｉｍ  Ｂｒｏｏｋからの、前に最下位に表示されていた電子メールは、もはや表示されず、Ｂｒｕｃｅ  Ｗａｌｋｅｒからの、前に最上位に表示されていた電子メール３５３０は、現在、上から２番目にあり、図６Ａに表示されていなかった、Ａａｒｏｎ  Ｊｏｎｅｓからの電子メール３５３４が、現在、リストの最上位に表示されている。
【００４５】
この例では、Ａａｒｏｎ  Ｊｏｎｅｓからの電子メール３５３４は、リストの中の最初の電子メールであり、このため、リストの終端である。この電子メール３５３４に到達すると、垂直に下向きのジェスチャ３５１４を継続して検出することに応答して、最初の電子メール３５３４より上（すなわち、リストの終端を超える）エリア３５３６（図６Ｃ）が、表示される。一部の実施形態では、リストの終端を超えて表示されるエリアは、リストの背景と視覚的に区別がつかない。図６Ｃにおいて、エリア３５３６と、電子メール（例えば、電子メール３５３４および３５３０）の背景はともに白であり、このため、視覚的に区別がつかない。
【００４６】
垂直に下向きのジェスチャ３５１４が完了して、対応する物体が、タッチスクリーン・ディスプレイ上、またはタッチスクリーン・ディスプレイ近くでもはや検出されなくなると、リストは、エリア３５３６がもはや表示されなくなるまで、反対方向にスクロールされる。図６Ｄは、この反対方向のスクロールの結果を示し、Ａａｒｏｎ  Ｊｏｎｅｓからの電子メール３５３４が、現在、リストに割り当てられたスクリーン・エリアの最上部に表示され、エリア３５３６は、表示されていない。
【００４７】
図６Ａ〜図６Ｄの例では、垂直に下向きのジェスチャが、リストの中の最初の項目を超えたエリアの表示をもたらしている。図３に表されるとおり、所定の最大変位（例えば、リストの中の最初の項目を超えるエリアの表示）に関する値が、上エッジおよび下エッジに関してブロック３０４で設定され、あるいはウインドウのすべてのエッジに関してブロック３０６で設定される。
【００４８】
同様に、垂直に上向きのジェスチャは、この垂直に上向きのジェスチャが、リストが最後の項目までスクロールされた後に続く場合、リストの最後の項目を超えたエリアの表示をもたらす。最後の項目は、最初の項目と同様に、リストの終端と考えられることが可能である。前述したとおり、ジェスチャは、垂直のスクロールをもたらすのに正確に垂直である必要はなく、つまり、完全な垂直から或る事前定義された角度範囲内のジェスチャで十分である。
【００４９】
図７は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、方向付きスクロール・オペレーションをもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。ＡＰＩ（アプリケーション・プログラミング・インタフェース）を介して操作するための方法７００は、ブロック７０２で、方向付きスクロールが有効にされるかどうかを決定する方向付きスクロール角度コールを転送することを含む。方法７００は、ブロック７０４で、垂直方向または水平方向の少なくとも１つにスクロールをロックするためのスクロール角度を設定する方向付きスクロール角度コールを転送することをさらに含む。方法７００は、ブロック７０６で、ユーザ入力が、水平方向に対して、第１のスクロール角度以下の角度を成す場合、水平方向にスクロールをロックすることをさらに含む。方法７００は、ブロック７０８で、ユーザ入力が、垂直方向に対して、第２のスクロール角度以下の角度を成す場合、垂直方向にスクロールをロックすることをさらに含む。
【００５０】
いくつかの実施形態では、ドラッグの形態のユーザ入力が、水平方向に対して、第１のスクロール角度未満の角度を成す。この場合、ユーザは、おそらく、水平方向のスクロールを意図している。スクロールは、ユーザ入力が第１のスクロール角度を超えるまで、水平方向にロックされる。第２のスクロール角度が、ユーザ入力を垂直方向にロックするために使用されることが可能である。第２のスクロール角度は、第１のスクロール角度と等しく設定されることが可能である。
【００５１】
図８は、デバイスのディスプレイのスクロールを水平方向または垂直方向にロックするための第１のスクロール角度、および第２のスクロール角度を示す。水平方向８０２および垂直方向８０４は、デバイスのウインドウまたはディスプレイを基準とする。方法７００において説明されるとおり、水平方向８０２に対して、第１のスクロール角度８０６または８０８以下の角度を成すドラッグの動きなどのユーザ入力が、そのユーザ入力を水平方向にロックする。同様に、垂直方向８１０に対して、第２のスクロール角度８１０または８１２以下の角度を成すユーザ入力が、そのユーザ入力を垂直方向にロックする。第１のスクロール角度と第２のスクロール角度は、同一の角度に設定されても、異なる角度に設定されてもよい。例えば、第１のスクロール角度、および第２のスクロール角度は、２５度に設定されることが可能である。水平方向または垂直方向に対して２５度以下のユーザ入力は、スクロールを適切な方向にロックする。
【００５２】
一部の実施形態では、水平ロック角度および垂直ロック角度は、コンテンツの態様によって或る程度、決定されることが可能である。例えば、縦長のページの形態のコンテンツは、水平ロック角度と比べて、より大きい垂直ロック角度を受けることが可能である。
【００５３】
図９は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、減速スクロール・オペレーションをもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。減速スクロール・オペレーションをもたらすための方法９００は、ブロック９０２で、ドラッグ・ユーザ入力に関する減速率を設定する減速スクロール・コールを転送することを含む。方法９００は、ブロック９０４で、ドラッグ・ユーザ入力の速度、および減速率に基づいて、スクロールを、停止するまで減速させることをさらに含む。
【００５４】
いくつかの実施形態では、ドラッグの形態のユーザ入力が、或る期間にわたってスクロール・オペレーションを呼び出す。ユーザ入力は、或る速度を有する。デバイスのディスプレイのウインドウまたは表示領域のスクロールされる領域のスクロールは、ユーザ入力が止まった後、ドラッグの動きの間のユーザ入力の速度に或る減速率を適用することによって停止させられる。
【００５５】
図１０は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、スクロール・ヒステリシス・オペレーションをもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。スクロール・ヒステリシス・オペレーションをもたらすための方法１０００は、ブロック１００２で、ユーザ入力がスクロールを呼び出すかどうかを決定するスクロール・ヒステリシス・コールを転送することを含む。方法１０００は、ブロック１００４で、ユーザ入力がスクロールを呼び出すかどうかを決定するためのヒステリシス値を設定することをさらに含む。
【００５６】
いくつかの実施形態では、デバイスのディスプレイ内のディスプレイまたはウインドウにわたる或る距離に及ぶドラッグの形態のユーザ入力が、スクロール・オペレーションを呼び出す。ヒステリシス値が、スクロール・オペレーションを呼び出すまでにディスプレイまたはウインドウにわたってユーザ入力がドラッグされなければならない、この或る距離を決定する。この或る所定の距離をドラッグされないユーザ入力は、スクロール・オペレーションを呼び出さず、マウス・アップ入力またはマウス・ダウン入力、あるいは他のタイプの入力と見なされる可能性がある。
【００５７】
図１１は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、デバイスのスクロール領域エッジまたはウインドウ・エッジにスクロール・インジケータを付けるためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。一部の実施形態では、スクロール領域エッジは、コンテンツ・エッジに関連する。ウインドウ・エッジまたはディスプレイ・エッジは、表示領域のエッジに関連することが可能である。スクロール・インジケータをもたらすための方法１１００は、ブロック１１０２で、少なくとも１つのスクロール・インジケータが、クロール領域のエッジに付けられるか、またはウインドウ・エッジに付けられるかを決定するスクロール・インジケータ・コールを転送することを含む。スクロール・インジケータは、任意のディスプレイ・エッジ、ウインドウ・エッジ、またはスクロール領域エッジの上で表示されることが可能である。方法１１００は、ブロック１１０４で、オプションとして、スクロール・インジケータ・コールに基づいてスクロール領域のエッジに少なくとも１つのスクロール・インジケータを付けることをさらに含む。代替として、方法１１００は、ブロック１１０６で、オプションとして、スクロール・インジケータ・コールに基づいてビューのウインドウ・エッジに少なくとも１つのスクロール・インジケータを付けることをさらに含む。
【００５８】
一部の実施形態では、方法１１００のオペレーションは、変更される、変形される、組み合わされる、または削除されることが可能である。例えば、ブロック１１０４は、削除されることが可能である。同様に、ブロック１１０６も、方法１１００から削除されることが可能である。代替として、ブロック１１０４とブロック１１０６の順序が入れ替えられることが可能である。また、本開示の中で開示されてきた様々なオペレーションを有する他の方法も、変更される、変形される、並べ替えられる、畳み込まれる、組み合わされる、または削除されることが可能である。
【００５９】
本開示のいくつかの実施形態では、スクロール・インジケータ・コールを転送することは、スクロール・インジケータ・コールを発行すること、開始すること、呼び出すこと、または受け取ることのいずれかである。例えば、ユーザ・インタフェース・ソフトウェア（例えば、ソフトウェア・キットまたはソフトウェア・ライブラリ）が、ソフトウェア・アプリケーションからスクロール・インジケータ・コールを受け取ることが可能である。
【００６０】
図１２は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、不慮のユーザ入力がデバイスのディスプレイのビューに接触したかどうかを判定するためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。この方法１２００は、ブロック１２０２で、ユーザ入力が不慮であったかどうかを判定する不慮のユーザ入力コールを転送することを含む。方法１２００は、ブロック１２０４で、不慮のユーザ入力コールの判定に基づいて、不慮のユーザ入力を無視することをさらに含む。一実施形態では、不慮のユーザ入力コールは、ユーザ入力が不慮の親指であったかどうかを判定する親指検出コールを含む。
【００６１】
本開示のいくつかの実施形態では、不慮のユーザ入力コールを転送することは、不慮のユーザ入力コールを発行すること、開始すること、呼び出すこと、または受け取ることのいずれかである。
【００６２】
ジェスチャＡＰＩが、ジェスチャリングを扱うためにアプリケーションとユーザ・ソフトウェアの間のインタフェースを提供する。ジェスチャリングは、ビュー、ウインドウ、またはディスプレイの拡大縮小、回転、または他の変更を含むことが可能である。マスクが、いくつかの変更だけを許す一方で、他の変更を制限する、または許さないことが可能である。あらゆる種類のイベントが、グラフィックス・フレームワークを介してアプリケーションに入ってくる。それらのイベントは、待ち行列化され、必要とされる場合、畳み込まれ、ディスパッチされる。それらのイベントが、システム・レベル・イベント（例えば、アプリケーションが、一時停止すべきである、デバイスの向きが変えられたなど）である場合、イベントは、ユーザ・インタフェース・ソフトウェアのクラスのインスタンスを有するアプリケーションに転送される。それらのイベントが、ユーザ入力に基づく手イベントである場合、イベントは、それらのイベントが上部で生じたウインドウに転送される。すると、ウインドウは、インスタンスのマウス・メソッドおよびジェスチャ・メソッドを呼び出すことによって、これらのイベントを適切なコントロールに転送する。マウス・ダウン・ファンクションまたはマウス入力ファンクションを受け取ったコントロールは、手が外されるまで、将来のすべてのコールを受け取り続ける。第二指が検出された場合、ジェスチャ・メソッドまたはジェスチャ・ファンクションが、呼び出される。これらのファンクションには、ジェスチャ開始コール、ジェスチャ変化コール、およびジェスチャ終了コールが含まれることが可能である。ジェスチャ開始コールを受け取ったコントロールには、ジェスチャが終了するまで、将来のすべてのジェスチャ変化コールが送られる。
【００６３】
図１３は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、ジェスチャ・オペレーションをもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。ジェスチャ・オペレーションをもたらすための方法１３００は、ブロック１３０２で、ジェスチャ・イベント処理コールを転送することを含む。方法１３００は、ブロック１３０４で、ジェスチャ・イベント処理コールに応答してジェスチャ変化コールを転送することをさらに含む。
【００６４】
いくつかの実施形態では、２つ以上のポイントの形態のユーザ入力が、デバイスのディスプレイによって受け取られる。デバイスのマルチタッチ・ドライバが、ユーザ入力を受け取り、イベントをイベント・オブジェクトにパッケージ化する。ウインドウ・サーバが、このイベント・オブジェクトを受け取り、このイベント・オブジェクトがジェスチャ・イベント・オブジェクトであるかどうかを判定する。ウインドウ・サーバが、ジェスチャ・イベント・オブジェクトが受け取られたと判定した場合、ユーザ・インタフェース・ソフトウェアが、ブロック１３０２でビューに関連するソフトウェア・アプリケーションにジェスチャ処理コールを発行または転送する。ソフトウェア・アプリケーションは、ジェスチャ・イベントが受け取られたことを確認し、ユーザ・インタフェース・ソフトウェアのライブラリにジェスチャ処理コールを送る。また、ウインドウ・サーバは、ユーザ入力を受け取ったビューにジェスチャ・イベント・オブジェクトを関連付ける。ライブラリは、ブロック１３０４で、ジェスチャ・イベント処理コールに応答して、ジェスチャ変化コールを転送することによって応答する。
【００６５】
一実施形態では、ユーザ入力に関連するウインドウまたはビューが、ジェスチャ・イベントを実行するために変化コールを受け取る。ビューをもたらすユーザ・ソフトウェアが、ジェスチャ開始イベント・コール、ジェスチャ変化イベント・コール、ビューに関する拡大縮小設定へのズーム、およびジェスチャ終了コールを受け取る。これらのジェスチャ・コールは、ハンド・イベント、キーボード・イベント、システム・イベントなどのタイプを有するベース・イベントであることが可能なジェスチャ・イベントの入力を受け取る。アプリケーションに関連付けられたデレゲートが、ジェスチャ開始コール、ジェスチャが変化したコール、およびジェスチャが終了したコールを受け取る。ユーザ・ソフトウェアは、ジェスチャ・プロセスのランタイム中にアプリケーションに動的にリンクしている。
【００６６】
一部の実施形態では、ジェスチャ変化ファンクション・コールは、ジェスチャについて以下の情報を含む。すなわち、
現在、下ろされている指の数、
最初に下ろされていた指の数、
手の回転、
手のスケール、
手の平行移動、
最も内側の指および最も外側の指の位置、および
第一指の圧力である。
他の実施形態では、下ろされている各指についてのさらなる情報が、以下のとおり含められることが可能である。すなわち、
指の段階（下ろされて触れているだけ、完全に押されている、持ち上げられているなど）、
指の位置、
指の近さ（貴方がどれだけ強く触れているか）、
指の向き（球形の置かれている角度）、
長軸および短軸の長さ、
指の速度、および
指の球形の偏心である。
【００６７】
ジェスチャ・イベント・オブジェクトは、コード・カウント（ビューまたはディスプレイに接触した指の数）、コード開始イベント、コード変化イベント、およびコード終了イベントを有するコード・イベント・オブジェクトであることが可能である。コード変化イベントは、拡大縮小変換または回転変換を含むことが可能である。
【００６８】
図１４は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、デバイスのディスプレイの表示領域、ウインドウ、またはビューの拡大縮小変換をもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。拡大縮小変換をもたらすための方法１４００は、ブロック１４０２で、複数の入力ポイントを有するユーザ入力に関連するビューに関する拡大縮小変換を決定する拡大縮小変換コールを転送することを含む。方法１４００は、ブロック１４０４で、拡大縮小ジェスチャ開始コールを転送することをさらに含む。方法１４００は、ブロック１４０６で、拡大縮小ジェスチャ進行コールを転送することをさらに含む。方法１２００は、ブロック１４０８で、拡大縮小ジェスチャ終了コールを転送することをさらに含む。
【００６９】
いくつかの実施形態では、２つ以上の入力ポイント（例えば、指）の形態のユーザ入力が一緒に、または離れて動いて、そのユーザ入力に関連するビューに対して拡大縮小変換を実行するジェスチャ・イベントを呼び出す。拡大縮小変換は、最小倍率および最大倍率を含む。図１５は、ビューの拡大縮小変換を有するデバイスのディスプレイ１５０２を示す。ビュー１５０４（例えば、Ｗｅｂコンテンツ、テキスト・コンテンツ、またはイメージ・コンテンツ）は、第１の倍率を有する。ビュー１５０４に関連する或るユーザ入力（例えば、離れて動く２本の指）が、ビュー１５０４から、ビュー１５１６の最大倍率を超える第２の倍率を有するビュー１５０８にズームアウトするジェスチャ・イベントとして解釈される。スナップバック・フラグが、ビュー１５１６に関連する最大倍率にスナップバックすることに先立って、最大倍率を超えてビュー１５０８までズームアウトが進むことができるかどうかを判定する。
【００７０】
図１６Ａは、ビュー１６１６の第１の倍率を有するデバイスのディスプレイ１６０４を示す。ビュー１６１４に関連する或るユーザ入力（例えば、一緒に動く２本の指１６０８および１６１０）が、図１６Ｂに示されるとおり、ビュー１６１４から、第２の倍率を有するビュー１６６４までズームインするジェスチャ・イベントとして解釈される。破線の領域１６０２および１６５０は、コンテンツの全体的なエリアを表し、唯一のコンテンツが、表示エリア１６０４および１６５２の中に表示されている。図１６Ａから図１６Ｂに拡大縮小変換を実行する際、ジェスチャ・イベントの中心、図１６Ａに関する中心１６１２、および図１６Ｂに関する中心１６６０は、ディスプレイ１６０４に対して同一の位置に留まる。スクロール・インジケータ１６０６は、変換中に縮小してスクロール・インジケータ１６５４になり、ズームイン・オペレーションの結果、全体的なコンテンツ１６５０のより小さい部分が、ディスプレイ１６０４上に示されていることを示す。破線の領域１６５０は、破線領域１６０２より大きく、ズームイン・オペレーションの結果、図１６Ｂの表示１６５２上に表示されていないコンテンツの部分がより大きいことを表す。
【００７１】
本開示の少なくともいくつかの実施形態において、ユーザが、図１６Ｃに示されるとおり、ビュー１６７０を２×の倍率から１×の倍率に変更することを所望する。ユーザ入力１６７６および１６７８の第２のセットに動かされるユーザ入力１６７２および１６７４の第１のセットが、倍率を２×から１×に下げる。ユーザが、ユーザ入力をビュー１６７０にわたって大きい距離で動かす必要なしに、２×から１×に倍率変更することが望ましい可能性がある。ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において、複数の入力ポイントを有するユーザ入力に関連するビューに関する拡大縮小変換を決定するために、ジェスチャ拡大縮小変換フラグが設定されることが可能である。拡大縮小変換フラグは、現在の倍率から最小倍率に、または現在の倍率から最大倍率に倍率変更する。例えば、フラグは、１．５×の倍率、ならびにユーザ入力１６８０および１６８２の第３のセットに関連する位置に設定されることが可能である。倍率を２×から１×に変更することを所望するユーザは、ジェスチャ拡大縮小変換フラグが１．５×という倍率に設定されている場合、ユーザ入力であるユーザの指を、第１のセット１６７２および１６７４から第３のセット１６８０および１６８２に動かすだけでよい。
【００７２】
図１７は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、デバイスのディスプレイのビュー、ウインドウ、または表示領域の回転変換をもたらすためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。回転変換をもたらすための方法１７００は、ブロック１７０２で、複数の入力ポイントを有するユーザ入力に関連するビューに関する回転変換を決定する回転変換コールを転送することを含む。方法１７００は、ブロック１７０４で、回転ジェスチャ開始コールを転送することをさらに含む。方法１７００は、ブロック１７０６で、拡大縮小ジェスチャ進行コールを転送することをさらに含む。方法１７００は、ブロック１７０８で、拡大縮小ジェスチャ終了コールを転送することをさらに含む。
【００７３】
いくつかの実施形態では、２つ以上の入力ポイントの形態のユーザ入力が回転して、そのユーザ入力に関連するビューに対して回転変換を実行するジェスチャ・イベントを呼び出す。回転変換は、関連する最小回転ビューおよび最大回転ビューに関する最小回転度および最大回転度を含む。ユーザ入力は、ビューが最大回転度にスナップバックすることに先立って、一時的に最大回転度を超えてビューを回転させることが可能である。
【００７４】
図１８は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、デバイスのディスプレイの表示領域、ウインドウ、またはビューに関連する少なくとも１つのアニメーションについてデレゲートに通知するためにソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。アニメーションにおける遅延が、ＡＰＩによって指定されることが可能である。また、複数のアニメーションに、ＡＰＩによって優先度が割り当てられることが可能である。デレゲートに通知するための方法１８００は、ブロック１８０２で、アニメーションが行われるかどうかを決定することを含む。方法１８００は、ブロック１８０４で、アニメーションの進行をチェックすることをさらに含む。進行が生じた場合、ブロック１８０６で、アニメーションの次の状態（例えば、位置、不透明度、または変換）が計算されることが可能である。ブロック１８０６で進行が完了した場合、ブロック１８０８で、完了したアニメーションに関連するビューが、デレゲートに関連付けられているかどうかが判定される。関連付けられている場合、ブロック１８１０で、そのビューに関するアニメーションについてデレゲートに通知するデレゲート・コールが転送される。ソフトウェア・アプリケーションの制御下で動作するデレゲートは、そのビューがアニメーションによって変更されることに応答して、他のビューを変更することができる。
【００７５】
いくつかの実施形態では、ソフトウェアは、ユーザ入力に関連するビューに対して拡大縮小変換を実行するアニメーションを呼び出す。ディスプレイは、多数のビューを含むことが可能である。拡大縮小変換によってサイズが大きくされているビューが、他のビューを遮る可能性があり、その場合、これらの他のビューは、サイズが小さくされる必要がある可能性がある。代替として、拡大縮小変換によってサイズが小さくされているビューが、他のビューのサイズが大きくされるさらなるエリアを生じさせる可能性がある。
【００７６】
図１９は、デバイスのディスプレイ上に表示された表示領域、ウインドウ、またはビューをアニメ化するための方法の流れ図である。方法１９００は、ブロック１９０２で、少なくとも２つのアニメーションを開始することを含む。方法１９００は、ブロック１９０４で、各アニメーションの進行を決定することをさらに含む。方法１９００は、ブロック１９０６で、単一のタイマに基づいて各アニメーションを完了させることをさらに含む。
【００７７】
本開示のいくつかの実施形態では、単一のタイマは、デバイスのディスプレイの現在のフレームの表示と次のフレームの表示の間の期間である再描画間隔に基づくタイマを含む。この場合、アニメーションの変化は、ディスプレイの次のフレーム中にそれらの変化を表示するために、再描画間隔中にディスプレイに同期される。各アニメーションの進行は、定期的に、または進行コールに基づいて計算されることが可能である。
【００７８】
方法１９００は、各アニメーションがデレゲートに関連付けられているかどうかを判定することをさらに含むことが可能である。次に、デレゲートが、そのアニメーションについて通知を受ける。アニメーションに関連していない他のビューは、デレゲートを制御するソフトウェア・アプリケーションに依存して変更されることが可能である。
【００７９】
図２０は、デバイスのディスプレイ上に表示された表示領域、ウインドウ、またはビューをアニメ化するための方法の流れ図である。方法２０００は、ブロック２００２で、単一のアニメーション・タイマを供給することを含む。方法２０００は、ブロック２００４で、この単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化することをさらに含む。例えば、単一のタイマが、同時に行われるすべてのアニメーションを制御することが可能である。これらのアニメーションには、変換アニメーション、フレーム・アニメーション、および不透明度アニメーションが含まれることが可能である。アニメーション変換は、拡大縮小変換または回転変換を含むことが可能である。フレーム・アニメーションは、フレームのサイズ変更を含むことが可能である。不透明度アニメーションは、不透明度を不透明から透明に、または透明から不透明に変える。
【００８０】
図２１は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、デバイスのディスプレイの複数のビューまたはウインドウに関連するアニメーションを同期するために複数のソフトウェア・アプリケーションまたはソフトウェア・プロセスと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。アニメーションを同期するための方法２１００は、ブロック２１０２で、複数のビューの属性を独立に設定することを含み、各ビューは、或るプロセスに関連付けられている。例えば、或るビューの属性または特性は、位置、サイズ、不透明度などを含むことが可能である。アニメーションが、１つまたは複数の属性を第１の状態から第２の状態に変える。方法２１００は、ブロック２１０４で、ディスプレイの複数のビューに関するアニメーションを同期する同期コールを転送することをさらに含む。同期コールは、複数のビューのアニメーションを要求しているプロセスの同期のＩＤ、およびそのようなプロセスのリストなどの、入力パラメータまたは引数を含むことが可能である。一実施形態では、同期コールは、アニメーションを要求しているプロセスのＩＤおよび数を含む。一実施形態では、各アプリケーションまたは各プロセスが、様々な時点で同期コールを送信する。方法２１００は、ブロック２１０６で、同期フラグが有効にされている場合に同期確認メッセージを転送することをさらに含む。同期フラグは、同期されるべきプロセスが、ユーザ・インタフェース・ソフトウェアを動作させているウインドウ・サーバにメッセージをそれぞれ送信した際に、有効にされることが可能である。方法２１００は、ブロック２１０８で、複数のビューの属性を第１の状態から第２の状態に独立に同期することをさらに含む。一実施形態では、ウインドウ・サーバは、様々な時点で各プロセスから同期された属性を受け取る。方法２１００は、ブロック２１１０で、両方のプロセスが、第２の状態に関連する同期された属性を有する場合に、要求されたアニメーションを描画するアニメーション開始コールを転送することをさらに含む。
【００８１】
一部の実施形態では、第１のデータ構造またはレイヤ・ツリーが、プロセスのビューまたはウインドウに対応するレイヤの階層を表す。第２のデータ構造またはレンダ・ツリーが、レイヤ・ツリーの同様のコピーを表す。しかし、レンダ・ツリーは、独立したプロセスが、それらのプロセスの別々のアニメーションを完了するまで、同期されない。この時点で、レンダ・ツリーは、新たなアニメーションでスクリーンを同期し、再描画する。
【００８２】
図２２Ａおよび図２２Ｂは、デバイスのディスプレイのビューまたはウインドウのサイズ変更を同期することを示す。例えば、或るサイズ属性を有する第１のプロセスに関連するウインドウ２２１０が、図２２Ａのウインドウ２２１０である第１の状態から、図２２Ｂのウインドウ２２１０である第２の状態に変化することによって、サイズが大きくなることが可能である。ほぼ同時に、第２のウインドウ２２２０が、第１のウインドウ２２１０のサイズが大きくなることに比例して、サイズが小さくなることが可能である。方法２１００は、図２２Ａおよび図２２Ｂに示されるウインドウ２２１０および２２２０のサイズ変更の同期をもたらす。第１の状態から第２の状態に変化する際のアニメーションは、漸進的に行われ、方法２１００の同期とともに行われることが可能である。
【００８３】
図２３は、データ処理デバイスのディスプレイ上に表示されたアプリケーションのビューの所有権を切り替えるための方法を示す。方法２３００は、ブロック２３０２で、レイヤの階層を有するデータ構造を構築することを含み、レイヤが、ビュー、およびそのビューを所有することに関連付けられている。これらのレイヤは、アプリケーションのユーザ・インタフェースに関するコンテンツ、ウインドウ、ビデオ、イメージ、テキスト、メディア、または他の任意のタイプのオブジェクトであることが可能である。方法２３００は、ブロック２３０４で、データ構造からレイヤを除去することをさらに含む。方法２３００は、ブロック２３０６で、ビューの所有権をレイヤからビューに切り替えることをさらに含む。
【００８４】
一部の実施形態では、データ構造からの各レイヤが、ビューに関連付けられる。ビューに関連付けられたレイヤは、ビューによって提供されるコンテンツを生成するために、ビューにデレゲート・ファンクション・コールを送る。第１のポインタ・リファレンスが、レイヤからビューへポイントする。第２のポインタ・リファレンスが、ビューからレイヤへポイントする。ビューなどのオブジェクトをポイントするリファレンスの数は、オブジェクトの保持カウントとして定義される。ビューは、レイヤがデータ構造から除去されるという通知を受け取ることが可能である。データ構造からレイヤを除去することは、デバイスのディスプレイから除去されるレイヤに関連付けられたビューに基づいて行われることが可能である。データ構造またはレイヤ・ツリーからレイヤが除去されると、レイヤからビューへのポインタが、除去される。ビューは、ビューの所有権が逆転されない場合、０という保持カウントを有し、メモリから割り当て解除される、または除去される。ビューは、所有権が逆転された場合、少なくとも１という保持カウントを有する。
【００８５】
図２４は、デバイスのディスプレイ上に表示されたアプリケーションのビューのメモリ管理のための方法を示す。方法２４００は、ブロック２４０２で、レイヤの階層を有するデータ構造を構築することを含み、少なくとも１つのレイヤが、ビューに関連付けられている。方法２４００は、ブロック２４０４で、データ構造をメモリの中に格納することをさらに含む。方法２４００は、ブロック２４０６で、他のオブジェクトからのビューへのリファレンスの数の保持カウントを保つことをさらに含む。方法２４００は、ブロック２４０８で、保持カウントが０である場合、メモリからビューを割り当て解除することをさらに含む。前述したとおり、ビューの保持カウントは、レイヤがデータ構造から除去される場合、デクリメントされる。データ構造からレイヤを除去することは、デバイスのディスプレイから除去されるレイヤに関連付けられたビューに基づいて行われることが可能である。
【００８６】
図２５Ａおよび図２５Ｂは、レイヤの階層を有するデータ構造を示し、１つのレイヤが、ビューに関連付けられている。このデータ構造は、レイヤ２５０２、２５０４、および２５０６を含む。レイヤ２５０６は、ビュー２５１０に関連付けられている。２５１０ビューに関連付けられたレイヤ２５０６は、ビューによって提供されるコンテンツを生成するために、ビューにデレゲート・コールを送る。第１のポインタ・リファレンス２５０８が、レイヤ２５０６からビュー２５１０へポイントする。第２のポインタ・リファレンス２５１２が、ビュー２５１０からレイヤ２５０６へポイントする。第３のポインタ・リファレンス２５３２が、ＵＩ（ユーザ・インタフェース）コントローラ２５３０からビュー２５１０へポイントする。ＵＩコントローラ２５３０が、ユーザ入力に応答してビュー２５１０をスクロールすることなどの、ビュー２５１０に関連するオペレーションを制御することができる。図２５Ａのビュー２５１０は、ポインタ・リファレンス２５０８および２５３２に基づいて、２という保持カウントを有する。
【００８７】
レイヤ２５０６が、図２５Ｂに示されるとおりデータ構造から除去された場合、ポインタ２５０８は、除去される。ビュー２５１０は、図２５Ｂに示されるとおり、より低い保持カウントを有する。ビュー２５１０が、０という保持カウントを有する場合、ビュー２５１０を格納しているメモリが、割り当て解除される。
【００８８】
図２６は、デバイス上で表示するためにユーザ・インタフェースのメディア・コンテンツと非メディア・コンテンツを合成するための方法を示す。方法２６００は、ブロック２６０２で、デバイスのユーザ・インタフェースに関連付けられたレイヤの階層を有するデータ構造を構築することを含む。方法２６００は、ブロック２６０４で、データ構造の各レイヤが、メディア・コンテンツに関連付けられているか、または非メディア・コンテンツに関連付けられているかを判定することをさらに含む。データ構造またはレイヤ・ツリーが、データ構造の各レイヤが、メディア・コンテンツに関連付けられているか、または非メディア・コンテンツに関連付けられているかを判定するために走査される。方法２６００は、ブロック２６０６で、メディア・コンテンツに関連付けられたレイヤをデータ構造から外すことをさらに含む。方法２６００は、ブロック２６０６で、第１のメモリ・ロケーションの中にメディア・コンテンツを格納することをさらに含む。方法２６００は、ブロック２６０８で、第２のメモリ・ロケーションの中に非メディア・コンテンツを格納することをさらに含む。方法２６００は、ブロック２６１０で、デバイス上で表示するためにメディア・コンテンツと非メディア・コンテンツを合成することをさらに含む。
【００８９】
一部の実施形態では、メディア・コンテンツと非メディア・コンテンツを合成することは、第１のメモリ・ロケーションからメディア・コンテンツを取り出すこと、第２のメモリ・ロケーションから非メディア・コンテンツを取り出すこと、およびメディア・コンテンツおよび非メディア・コンテンツをディスプレイに直接にスキャンすることを含む。メモリ・ロケーションは、キャッシュ、メイン・メモリ、グラフィックス処理ユニット、またはデバイス内の他のロケーションの中に配置された任意のタイプのメモリであることが可能である。メディア・コンテンツは、ビデオ、ビデオ・プラグイン、オーディオ、イメージ、またはその他の時間につれ変化するメディアであることが可能である。メディア・コンテンツは、ＹＵＶモデルの形態であることが可能であり、Ｙは、輝度成分（明るさ）を表し、ＵおよびＶは、クロミナンス（色）成分を表す。メディア・コンテンツは、実質的に毎秒２０フレームないし４０フレームのレートでディスプレイにスキャンされることが可能である。メディア・コンテンツは、デバイスのディスプレイにスキャンされることに先立って、拡大縮小されることが可能である。
【００９０】
非メディア・コンテンツは、頻繁な同期を要求しないコンテンツ、ビュー、およびイメージを含むことが可能である。非メディア・コンテンツは、赤、緑、および青（加法光モデルにおいて、しばしば、使用される）が様々な仕方で組み合わされて、他の色を再現する加法モデルである、ＲＧＢモデルの形態であることが可能である。非メディア・コンテンツは、メディア・コンテンツと比べて、より低いレートでディスプレイにスキャンされることが可能である。
【００９１】
図２７は、レイヤの階層を有するデータ構造またはレイヤ・ツリーを示す。これらのレイヤは、メディア・コンテンツおよび非メディア・コンテンツに関連付けられることが可能である。例えば、レイヤ２７０４は、ビデオなどのメディア・コンテンツ２７０６に関連付けられる。レイヤ２７１０は、ビデオに関するユーザ・インタフェース・ビューであることが可能な非メディア・コンテンツ２７１２に関連付けられる。レイヤ２７２０、２７３０、および２７４０は、非メディア・コンテンツ２７１２の成分を成す非メディア・コンテンツ２７２２、２７３２、および２７４２にそれぞれ関連付けられる。方法２６００は、データ構造の各レイヤが、メディアに関連付けられているか、または非コンテンツに関連付けられているかを判定する。レイヤ２７０４などの、メディア・コンテンツに関連付けられたレイヤは、データ構造から除去され、別個のメモリ・ロケーションの中で処理される。
【００９２】
一部の実施形態では、本開示の方法、システム、および装置は、電子デバイス、消費者デバイス、データ処理デバイス、デスクトップ・コンピュータ、ポータブル・コンピュータ、無線デバイス、セルラー・デバイス、タブレット・デバイス、ハンドヘルド・デバイス、マルチタッチ・デバイス、マルチタッチ・データ処理デバイス、これらのデバイスの任意の組み合わせ、または他の類似したデバイスを含む様々なデバイスにおいて実施されることが可能である。図４〜図６、および図２８〜図３３は、これらのデバイスのうちいくつかのデバイスの例を示す。
【００９３】
図２８は、本開示の一実施形態によるデバイス２８００を示す。図２８は、「キャンディ・バー」スタイルを有する電話構成で無線デバイスを示す。図２８で、無線デバイス２８００は、筐体２８３２、ディスプレイ・デバイス２８３４、英数字キーパッドであることが可能な入力デバイス２８３６、スピーカ２８３８、マイクロホン２８４０、およびアンテナ２８４２を含むことが可能である。また、無線デバイス２８００は、近接センサ２８４４および加速度計２８４６を含むことも可能である。図２８の実施形態は、より多い、またはより少ないセンサを使用してもよく、さらに図２８に示されるフォーム・ファクタとは異なるフォーム・ファクタを有してもよいことが認められよう。
【００９４】
ディスプレイ・デバイス２８３４は、筐体２８３２の上部に配置されて示され、入力デバイス２８３６は、筐体２８３２の下部に配置されて示される。アンテナ２８４２は、筐体２８３２の上部において筐体２８３２から延びて示される。また、スピーカ２８３８も、ディスプレイ・デバイス２８３４より上に筐体２８３２の上部に示される。マイクロホン２８４０は、入力デバイス３２８６より下に筐体２８３２の下部に示される。スピーカ２８３８およびマイクロホン２８４０は、筐体上の任意の場所に配置されることが可能であるが、通常、それぞれ、ユーザの耳および口に応じて配置されることが認められよう。
【００９５】
ディスプレイ・デバイス２８３４は、例えば、入力を受け入れる能力を含まないＬＣＤ（液晶ディスプレイ）、またはＬＣＤも含むタッチ入力スクリーンであることが可能である。入力デバイス２８３６には、例えば、ボタン、スイッチ、ダイヤル、スライダ、キーまたはキーパッド、ナビゲーション・パッド、タッチパッド、タッチスクリーンなどが含まれることが可能である。任意のよく知られたスピーカ、マイクロホン、およびアンテナが、それぞれ、スピーカ２８３８、マイクロホン２８４０、およびアンテナ２８４２のために使用されることが可能である。
【００９６】
近接センサ２８４４から獲得されたデータと、加速度計２８４６から獲得されたデータが、一緒に組み合わされて、または単独で使用されて、ユーザの活動についての情報が収集されることが可能である。近接センサ２８４４からのデータ、加速度計２８４６からのデータ、またはその両方が、例えば、ディスプレイ・バックライトを活性化／非活性化する、コマンドを開始する、選択を行う、ディスプレイにおけるスクロール、ジェスチャリング、アニメ化、またはその他の動きを制御する、入力デバイス設定を制御する、あるいはデバイスの１つまたは複数の設定に他の変更を行うのに使用されることが可能である。本開示のいくつかの実施形態では、デバイス２８００は、本開示で説明される方法の少なくともいくつかを実施するのに使用されることが可能である。
【００９７】
図２９は、本開示の一実施形態によるデバイス２９５０を示す。デバイス２９５０は、筐体２９５２、ディスプレイ／入力デバイス２９５４、スピーカ２９５６、マイクロホン２９５８、およびオプションのアンテナ２９６０（筐体の外部に見えてもよく、あるいは筐体内部に隠されてもよい）を含むことが可能である。また、デバイス２９５０は、近接センサ２９６２および加速度計２９６４を含むことも可能である。デバイス２９５０は、セルラー電話機、または組み込まれたＰＤＡであるデバイスとセルラー電話機であるデバイス、または組み込まれたメディア・プレーヤとセルラー電話機であるデバイス、またはエンターテイメント・システム（例えば、ゲームをするための）とセルラー電話機の両方であるデバイス、あるいは本明細書で説明される他のタイプのデバイスであり得るデバイス２９５０であることが可能である。１つの特定の実施形態では、デバイス２９５０は、筐体２９５２内部にすべて含まれる、セルラー電話機とメディア・プレーヤとＰＤＡとを含むことが可能である。デバイス２９５０は、通常の大人の手の中に収まるだけ十分に小さく、大人が片手で運ぶことができるだけ十分に軽量であるフォーム・ファクタを有することが可能である。「ポータブル」という用語は、デバイスが、大人のユーザの手（片手または両手）の中に容易に保持されることが可能であることを意味し、つまり、例えば、ラップトップ・コンピュータおよびｉＰｏｄが、ポータブル・デバイスであることが認められよう。
【００９８】
一実施形態では、ディスプレイ／入力デバイス２９５４は、ＬＣＤなどのディスプレイであることに加えて、マルチポイント・タッチ入力スクリーンを含むことが可能である。一実施形態では、マルチポイント・タッチスクリーンは、タッチ・パネルの平面において同時に、異なる位置で行われる複数のタッチ（例えば、ディスプレイに同時に触れている、またはほとんど触れているユーザの顔、または複数の指からのディスプレイ上のブラブ）または複数のほぼタッチを検出し、この複数のタッチのそれぞれに関してタッチ・パネルの平面上のタッチの位置を表す異なる信号を生成するように構成された容量センサ型媒体である。
【００９９】
本開示のいくつかの実施形態では、デバイス２８００を使用して、本開示で説明される方法の少なくともいくつかが実施されることが可能である。
【０１００】
図３０Ａおよび図３０Ｂは、本開示の一実施形態によるデバイス３０７０を示す。デバイス３０７０は、ディスプレイ筐体３０８９をキーパッド筐体３０９１に結合するヒンジ３０８７を含むセルラー電話機であることが可能である。ヒンジ３０８７は、セルラー電話機が図３０Ａおよび図３０Ｂに示される２つの異なる構成の少なくとも１つにされることが可能であるように、ユーザが、セルラー電話機を開閉することを許す。１つの特定の実施形態では、ヒンジ３０８７は、ディスプレイ筐体をキーパッド筐体に回転可能な仕方で結合することが可能である。特に、ユーザは、セルラー電話機を開いて、図３０Ａに示される開かれた構成にすることができ、セルラー電話機を閉じて、図３０Ｂに示される閉じられた構成にすることができる。キーパッド筐体３０９１は、ユーザから入力（例えば、電話番号入力または他の英数字入力）を受け取るキーパッド３０９５、およびユーザから音声入力を受け取るマイクロホン３０９７を含むことが可能である。ディスプレイ筐体３０８９は、筐体３０８９の内部表面上に、ディスプレイ３０９３（例えば、ＬＣＤ）と、スピーカ３０９８と、近接センサ３０８４とを含むことが可能であり、筐体３０８９の外部表面上に、ディスプレイ筐体３０８９は、スピーカ３０９６と、温度センサ３０９４と、ディスプレイ３０８８（例えば、別のＬＣＤ）と、周囲光センサ３０９２と、近接センサ３０８４Ａとを含むことが可能である。このため、この実施形態では、ディスプレイ筐体３０８９は、筐体３０８９の内部表面上に第１の近接センサを含むことが可能であり、筐体３０８９の外部表面上に第２の近接センサを含むことが可能である。
【０１０１】
少なくともいくつかの実施形態では、デバイス３０７０は、セルラー電話機、メディア・プレーヤ、エンターテイメント・システム、ＰＤＡ、または本明細書で説明される他のタイプのデバイスなどの無線通信デバイスの機能の１つまたは複数を提供する構成要素を含むことが可能である。或る実施形態の一実装において、デバイス３０７０は、ＭＰ３音楽ファイルなどのＭＰ３ファイルを再生するメディア・プレーヤと一体化されたセルラー電話機であることが可能である。
【０１０２】
図４、図５Ａ、図５Ｂ、図５Ｃ、図６Ａ、図６Ｂ、図６Ｃ、図６Ｄ、図２８、図２９、図３０Ａ、および図３０Ｂに示されるデバイスのそれぞれは、セルラー電話機などの無線通信デバイスであることが可能であり、無線通信のための能力をもたらす複数の構成要素を含むことが可能である。図３１は、無線通信のための能力を含む無線デバイス３０７０の実施形態を示す。無線デバイス３０７０は、図４、図５Ａ、図５Ｂ、図５Ｃ、図６Ａ、図６Ｂ、図６Ｃ、図６Ｄ、図２８、図２９、図３０Ａ、および図３０Ｂに示されるデバイスのいずれか１つの中に含まれることが可能であるが、図４、図５Ａ、図５Ｂ、図５Ｃ、図６Ａ、図６Ｂ、図６Ｃ、図６Ｄ、図２８、図２９、図３０Ａ、および図３０Ｂのそれらのデバイスの代替の実施形態は、無線デバイス３０７０と比べて、より多い、またはより少ない構成要素を含むことも可能である。
【０１０３】
無線デバイス３０７０は、アンテナ・システム３１０１を含むことが可能である。また、無線デバイス３０７０は、アンテナ・システム３１０１を介して音声信号、デジタル・データ信号、および／またはメディア信号を送信する、さらに／または受信する、アンテナ・システム３１０１に結合されたデジタルおよび／またはアナログＲＦ（無線周波数）トランシーバ３１０２を含むことも可能である。
【０１０４】
また、無線デバイス３０７０は、デジタルＲＦトランシーバを制御し、音声信号、デジタル・データ信号、および／またはメディア信号を管理するデジタル処理システム３１０３を含むことも可能である。デジタル処理システム３１０３は、例えばマイクロプロセッサやコントローラなどの汎用処理デバイスであることが可能である。また、デジタル処理システム３１０３は、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）、またはＤＳＰ（デジタル・シグナル・プロセッサ）などの専用処理デバイスであることも可能である。また、デジタル処理システム３１０３は、無線デバイス３０７０の他の構成要素とインタフェースをとる、当技術分野で知られている他のデバイスを含むことも可能である。例えば、デジタル処理システム３１０３は、無線デバイス３０７０の他の構成要素とインタフェースをとるアナログ−デジタル変換器およびデジタル−アナログ変換器を含むことが可能である。デジタル処理システム３１０３は、オーディオ・データのファイルなどのメディアを管理する汎用処理デバイスまたは専用処理デバイスを含むことも可能な、メディア処理システム３１０９を含むことが可能である。
【０１０５】
無線デバイス３０７０は、無線デバイス３０７０に関するデータおよび／またはオペレーティング・プログラムを格納する、データ処理システムに結合されたストレージ・デバイス３１０４を含むことも可能である。ストレージ・デバイス３１０４は、例えば、任意のタイプのソリッドステート・メモリ・デバイスまたは磁気メモリ・デバイスであることが可能である。
【０１０６】
また、無線デバイス３０７０は、ユーザ入力（例えば、電話番号、名前、アドレス、メディア選択など）を受け入れる、デジタル処理システム３１０３に結合された、１つまたは複数の入力デバイス３１０５を含むことも可能である。入力デバイス３１０５は、例えば、ディスプレイ・デバイス、または類似する入力デバイスと組み合わされたキーパッド、タッチパッド、タッチスクリーン、ポインティング・デバイスの１つまたは複数であることが可能である。
【０１０７】
また、無線デバイス３０７０は、入力デバイス３１０５を介して選択されたメッセージ、電話呼情報、連絡先情報、ピクチャ、映画、および／またはメディアの題名または他の表示などの情報を表示する、デジタル処理システム３１０３に結合された少なくとも１つのディスプレイ・デバイス３３１０６を含むことも可能である。ディスプレイ・デバイス３１０６は、例えば、ＬＣＤディスプレイ・デバイスであることが可能である。一実施形態では、ディスプレイ・デバイス３１０６と入力デバイス３１０５は、同一のデバイス（例えば、ＬＣＤディスプレイ・デバイスなどのディスプレイ・デバイスと一体化されたマルチタッチ入力パネルなどのタッチスクリーンＬＣＤ）内に一緒に組み込まれることが可能である。ディスプレイ・デバイス３１０６は、いくつかの状況下でディスプレイ・デバイス３１０６を照明するバックライト３１０６Ａを含むことが可能である。無線デバイス３０７０は、複数のディスプレイを含んでもよいことが認められよう。
【０１０８】
また、無線デバイス３０７０は、デジタルＲＦトランシーバ３１０２、データ処理システム３１０３、ストレージ・デバイス３１０４、入力デバイス３１０５、マイクロホン３１０５Ａ、オーディオ・トランスデューサ３１０８、メディア処理システム３１０９、センサ３１１０、およびディスプレイ・デバイス３１０６を含むシステムの構成要素に動作電力を供給するバッテリ３１０７を含むことも可能である。バッテリ３１０７は、例えば、充電可能な、または充電可能でないリチウム金属水素化物バッテリまたはニッケル金属水素化物バッテリであることが可能である。また、無線デバイス３０７０は、１つまたは複数のスピーカを含むことが可能なオーディオ・トランスデューサ３１０８、および少なくとも１つのマイクロホン３１０５Ａを含むことも可能である。本開示のいくつかの実施形態では、無線デバイス３０７０を使用して、本開示で説明される方法の少なくともいくつかが実施されることが可能である。
【０１０９】
図３２は、本開示の実施形態によるデバイスの別の例を示す。このデバイス３２００は、バス３２０６を介して互いに結合される、マイクロプロセッサ３２０２などのプロセッサ、およびメモリ３２０４を含むことが可能である。デバイス３２００は、オプションとして、マイクロプロセッサ３２０２に結合されたキャッシュ３２０８を含むことが可能である。また、このデバイスは、オプションとして、バス３２０６を介してその他の構成要素に結合されるディスプレイ・コントローラ−ディスプレイ・デバイス３２１０を含むことも可能である。また、１つまたは複数の入出力コントローラ３２１２が、バス３２０６に結合されて、入出力デバイス３２１４に関するインタフェースをもたらし、ユーザ活動を感知するための１つまたは複数のセンサ３２１６に関するインタフェースをもたらす。バス３２０６は、当技術分野でよく知られるとおり、様々なブリッジ、コントローラ、および／またはアダプタを介して互いに接続される１つまたは複数のバスを含むことが可能である。入出力デバイス３２１４は、キーパッドもしくはキーボード、またはタッチ入力パネルなどのカーソル制御デバイスを含むことが可能である。さらに、入出力デバイス３２１４は、有線ネットワークまたは無線ネットワーク（例えば、ＲＦトランシーバ）のためのネットワーク・インタフェースを含むことが可能である。センサ３２１６は、例えば、近接センサまたは周囲光センサを含む、本明細書で説明されるセンサのいずれのセンサであってもよい。デバイス３２００の少なくともいくつかの実施形態では、マイクロプロセッサ３２０２は、１つまたは複数のセンサ３２１６からデータを受け取ることができ、本明細書において説明される仕方で、そのデータの分析を実行することができる。例えば、そのデータは、人工知能プロセスを介して、または本明細書で説明される他の仕方で分析されることが可能である。その分析の結果、マイクロプロセッサ３２０２は、デバイスの１つまたは複数の設定の調整を自動的に生じさせることができる。
【０１１０】
本開示のいくつかの実施形態では、デバイス３２００を使用して、本開示で説明される方法の少なくともいくつかが実施されることが可能である。
【０１１１】
図３３Ａ〜図３３Ｃは、本開示の少なくともいくつかの実施形態によるデバイスの別の例を示す。図３３Ａは、キーボード３３０２、本体３３０４、ディスプレイ・フレーム３３０６、およびディスプレイ３３０８を有するラップトップ・デバイス３３００を示す。ラップトップ・デバイス３３００は、図３３Ｂおよび図３３Ｃに示されるタブレット・デバイスに変換されることが可能である。図３３Ｂは、ラップトップ・デバイスの、タブレット・デバイスへの変換を示す。ディスプレイ３３５８を含むディスプレイ・フレーム３３５６の縁端部が、図３３Ｃに示されるタブレット・デバイスを形成するまで、キーボード３３５２の上にわたって本体３３５４内に滑り込む。ディスプレイ２３６２およびディスプレイ・フレーム３３６６を有するタブレット・デバイスは、本体３３６０の上に載る。
【０１１２】
本開示のいくつかの実施形態では、ラップトップ・デバイス３３００を使用して、本開示で説明される方法の少なくともいくつかが実施されることが可能である。
【０１１３】
図３４は、本開示のいくつかの教示によるアプリケーション・プログラミング・インタフェースの詳細を流れ図形態で示す。このアプリケーション・プログラミング・インタフェースは、ソフトウェア・アプリケーションと対話するユーザ・インタフェース・ソフトウェアを有する環境において動作する。一部の実施形態では、ビューの階層が、ユーザ・インタフェース・ソフトウェア内のレイヤの階層の上で動作する。ＡＰＩは、ブロック３４０２で、レイヤの階層の上で動作するビューの階層を構築することを含む方法３４００に示されるとおり動作する。方法３４００は、ブロック３４０４で、レイヤの階層へのアクセスをもたらすことなしにビューの階層へのアクセスをもたらすことをさらに含む。アプリケーションは、ビューの階層の下で動作するレイヤの階層にアクセスすることなしに、ＡＰＩを介してビューの階層と対話することができる。
【０１１４】
一部の実施形態では、プラットフォームは、様々なスクロール・オペレーション、ジェスチャリング・オペレーション、およびアニメ化オペレーションを提供する。プラットフォームは、ハードウェア構成要素およびオペレーティング・システムを含む。ハードウェア構成要素は、入力パネルに結合された処理装置、およびプロセッサに結合されたメモリを含むことが可能である。オペレーティング・システムは、メモリの中に格納され、処理装置によって実行されるように構成された１つまたは複数のプログラムを含む。１つまたは複数のプログラムは、様々なスクロール・オペレーション、ジェスチャリング・オペレーション、およびアニメ化オペレーションを実行するためにアプリケーション・プログラミング・インタフェースを介してファンクション・コールまたはメッセージを転送するための様々な命令を含む。
【０１１５】
或る実施形態では、１つまたは複数のプログラムは、スクロールの終わりに表示領域の中で、スクロールされる領域のエッジを超えた領域が目に見えることに基づいて、スクロールの反対方向にスクロールされる領域の揺れ戻りを生じさせる揺れ戻りコールを、ＡＰＩを介して転送するための命令を含む。或る実施形態では、１つまたは複数のプログラムは、スクロールされる領域が、スクロールに基づいてディスプレイ・エッジを超えると、所定の最大変位量だけスクロールされる領域に対してラバーバンド効果を生じさせるラバーバンド・コールを、ＡＰＩを介して転送するための命令を含む。或る実施形態では、１つまたは複数のプログラムは、垂直方向または水平方向の少なくとも１つにスクロールをロックするためのスクロール角度を設定する方向付きスクロール・コールを、ＡＰＩを介して転送するための命令を含む。
【０１１６】
或る実施形態では、１つまたは複数のプログラムは、ユーザ入力がスクロールを呼び出すかどうかを決定するスクロール・ヒステリシス・コールを、ＡＰＩを介して転送するための命令を含む。或る実施形態では、１つまたは複数のプログラムは、ユーザ入力がスクロールを呼び出すことに基づいて、ユーザ入力に関する減速率を設定するスクロール減速コールを、ＡＰＩを介して転送するための命令を含む。或る実施形態では、１つまたは複数のプログラムは、少なくとも１つのスクロール・インジケータが、コンテンツ・エッジに付けられるか、または表示領域のディスプレイ・エッジに付けられるかを決定するスクロール・インジケータ・コールを、ＡＰＩを介して転送するための命令を含む。
【０１１７】
一部の実施形態では、プラットフォームは、ソフトウェア・コードのライブラリを含むフレームワークを含む。フレームワークは、プラットフォームのプログラムと対話して、様々なスクロール・オペレーション、ジェスチャリング・オペレーション、およびアニメ化オペレーションを実行するためのアプリケーション・プログラミング・インタフェースをもたらす。また、フレームワークは、単一のディレクトリの中に格納される、関連するリソース（例えば、イメージ、テキストなど）も含む。
【０１１８】
或る実施形態では、フレームワークのライブラリは、スクロールの終わりに表示領域の中で、スクロールされる領域のエッジを超えた領域が目に見えることに基づいて、スクロールの反対方向にスクロールされる領域の揺れ戻りを生じさせる揺れ戻りオペレーションを指定するためのＡＰＩを用意する。或る実施形態では、フレームワークのライブラリは、スクロールされる領域が、スクロールに基づいてディスプレイ・エッジを超えると、所定の最大変位量だけスクロールされる領域に対してラバーバンド効果を与えるラバーバンド・オペレーションを指定するためのＡＰＩを用意する。或る実施形態では、フレームワークのライブラリは、垂直方向または水平方向の少なくとも１つにスクロールをロックするためのスクロール角度を設定する方向付きスクロール・オペレーションを指定するためのＡＰＩを用意する。
【０１１９】
或る実施形態では、フレームワークのライブラリは、ユーザ入力がスクロールを呼び出すかどうかを決定するスクロール・ヒステリシス・オペレーションを指定するためのＡＰＩを用意する。或る実施形態では、フレームワークのライブラリは、ユーザ入力がスクロールを呼び出すことに基づいて、ユーザ入力に関する減速率を設定するスクロール減速オペレーションを指定するためのＡＰＩを用意する。或る実施形態では、フレームワークのライブラリは、少なくとも１つのスクロール・インジケータが、コンテンツ・エッジに付けられるか、または表示領域のディスプレイ・エッジに付けられるかを決定するスクロール・インジケータ・オペレーションを指定するためのＡＰＩを用意する。
【０１２０】
以上の説明において、本開示は、本開示の特定の例示的な実施形態に関連して説明されてきた。添付の特許請求の範囲に示される本開示の、より広い趣旨および範囲を逸脱することなく、これらの実施形態に様々な変形が行われることが可能であることが明白であろう。したがって、本明細書および図面は、制限するものとしてではなく、例示するものと見なされるべきである。
【０１２１】
付録Ａ
ＡＰＩソフトウェア・コード
1   -(AffineTransform)transform;
2   -(void)setTransform:(AffineTransform)transform: // アニメ化可能 
3
4   @interface UIView(Animation)
5
6/7   +(void)beginAnimation:(String*)animationIDS; // 貴方が、グループに関する識別子を有することを所望しない場合、animationIDは無であることが可能である
8/9   +(void)beginAnimations:(String*)animationID context:(void*)context // 送られたさらなるコンテキスト情報が、セレクタを開始する／停止させた
10   +(void)endAnimations;
11
12   +(void)setAnimationDelegate:(id)delegate;
13   +(void)setAnimationDuration:(TimeInterval)duration;
14   +(void)setAnimationDelay:(TimeInterval)delay;
15   +(void)setAnimationStartTime:(AbsoluteTime)start;
16   +(void)setAnimationCurve:(UIViewAnimationCurve)curve;
17
18   -(BOOL)handleEvent:(Event)event;
19
20/21   // これは、アプリケーションが一時停止して、前のアプリケーションに戻る場合、呼び出される。
22   // アプリケーションは、アニメーションを実行する場合、「はい」を戻すべきであり、さもなければ、アプリケーションは、
23   // 「いいえ」を戻すべきである。startTime引数は、開始されるべきアニメーションの開始時間であり、したがって、
24  // アニメーションは、ウインドウ・サーバと同期される。この方法の
25/26/27  // アプリケーションの実装が、「はい」を戻す場合、アプリケーションの実装は、アニメ化することを終えると、
// [UIApp suspendWith ANimation:NO] を後に呼び出さなければならない。
28   (BOOL)animateSuspensionReturningToLastApp:AbsoluteTime)startTime;
29
30/31   // ステータス・バー・モード、持続時間にわたる向きを設定する。processSynchIDが０でない場合、sync IDとして使用される。
32/33/34   -(void)setStatusBarMode:(UIStatusBarMode)mode
orientation: (UIStatusBarOrientation) orientation duration:(float)duration processSynchID:(int)processSynchID;
35   // ステータス・バー・モードを設定する。0の持続時間は、アニメーション無しを意味する
36/37  -(void)setStatusBarMode:(UIStatusBarMode)mode
orientation:(UIStatusBarOrientation)orientation duration: (float)duration;
38/39   -(void)setStatusBarMode:(UIStatusBarMode)mode duration:(float)duration; // デフォルトの向きを使用する。
40   -(UIStatusBarOrientation)statusBarOrientation;
41   -(UIStatusBarOrientation)statusBarMode;
42   // 非回転ウインドウ座標におけるステータス・バーrect。
43
44/45   -(void)synchronizedDrawingWithlD:(int)processSynchID; // ステータス・バー・サイズ変更のために使用される
46   // 
47/48   // ジェスチャ・デレゲート・メソッド。イベントは、ジェスチャがイベント駆動型 (すなわち、プログラム的に、またはアニメーション)でない場合、無である。
49   @interface Object(UIViewGestureDelegate)
50
51  -(void)willStartGestures:(UIView*)view forEvent:(GSEvent)event;
52
53   -(void)didFinishGestures:(UIView*)view forEvent:(Event)event;
54
55/56   -(void)willStartGesture:(UIGestureType)type inView:(UIView*) view forEvent:(Event)event;
57
58/59   -(void)gestureDidChange:(UIGestureType)type inView:(UIView*) view forEvent:(Event)event;
60
61/62   -(void)didFinishGesture:(UIGestureType)type inView:(UIView*) view forEvent:(Event)event;
63   @end
64
65   UIGestureAttributeZooms // 数(BOOL)
66
67   typedef enum {
68/69         UIScrollerEventModelnterceptOnDrag, // ドラッグされない場合、mouseDown / mouseUpをサブビューに送る
70/71         UIScrollerEventModePass, // mouseDown/mouseDrag/mouseUpをサブビューに送る
72/73            UIScrollerEventModelntercept, // mouseDown / mouseUpをサブビューに送る } UIScrollerEventMode;
74   -(void)setEventMode:(UIScrollerEventMode)mode;
75
76   -(void)setDirectionalScrolling:(BOOL)flag;
77
78   -(void)setDirectionalScrollingAngle:(float)flag;
79
80   -(void)setScrollDecelerationFactor:(float)factor;
81
82   -(void)setBounces:(BOOL)bounces;
83
84   -(void)setThumbDetectionEnabled:(BOOL)flag;
85
86   - (void)setShowScrollerIndicators:(BOOL)flag;
87
88   -(void)setScrollerIndicator:(Rect)rect;
89
90   -(void)setScrollerIndicatorsPinToContent:(BOOL)flag;
91
92/93   -(void)setAllowsRubberBanding:(BOOL)flag; // 上エッジおよび下エッジに関してRUBBER_BAND_HEIGHTを用いてsetRubberBand:forEdges:を呼び出す
94
95/96   -(void)setAllowsFourWayRubberBanding:(BOOL)flag; // すべてのエッジに関してRUBBER_BAND_HEIGHTを用いてsetRubberBand: for Edges:を呼び出す
97
98/99   -(void)setRubberBand:(float)value for Edges:(UIRectEdge)edges: // 上エッジおよび下エッジに関して設定されたデフォルト
100
101/102   -(void)contentMouseUpInView:(UIView*)mouseUpView
withEvent:(Event)event; // ビューに対するデフォルトのコール -mouseUp;
103
104   -(Point)scroller:(UIScroller*)scroller
105   adjustSmoothScrollEnd:(Point)offset velocity:(Size)velocity;
106
107   @interfacebject(UIAnimationDelegate)
108   -(void)animator:(UIAnimator*)animator
109   startAnimation:(UIAnimation*)animation;
110   - (void)animator:(UIAnimator*)animator
111   stopAnimation:(UIAnimation*)animation;
112   -(void)animator:(UIAnimator*)animator stopAnimation: (UIAnimation*)animati113   on fraction:(float)fraction;
114   @end
115   // 
116   @interface UITransformAnimation:UIAnimation {
117          @protected
118                 AffineTransform     _startTransform;
119                 AffineTransform     _endTransform;
120   }
121   -(void)setStartTransform:(AffineTransform)start;
122   -(void)setEndTransform:(AffineTransform)end;
123   -(AffineTransform)transformForFraction:(float)fraction;
124   @end
125   // 
126   @interface UIFrameAnimation:UIAnimation {
127                    Rect  _startFrame;
128                    Rect  _endFrame;
129                    UIRectFields _fieldsToChange;
130   }
131   -(void)setStartFrame:(Rect)start;
132   -(void)setEndFrame:(Rect)end;
133   -(void)setSignificantRectFields:(UIRectFields)fields;
134
135   -(Rect)endFrame;
136
137   @end
138   
139   @interface UIAlphaAnimation:UIAnimation {
140            @protected
141                   float     _startAlpha;
142                   float     _endAlpha;
143   }
144   -(void)setStartAlpha:(float)start;
145   -(void)setEndAlpha:(float)end;
146   -(void)alphaForFraction:(float)fraction;
147
148   @end
149
150   @interface UIRotationAnimation:UIAnimation {
151           float   _startAngle;
152           float   _endAngle;
153   -(void)setStartRotationAngle:(float)degrees;
154   -(void)setEndRotationAngle:(float)degrees;
【符号の説明】
【０１２２】
４００  ポータブル電子デバイス；  ４０８  タッチセンシティブ・ディスプレイ；  
４１０  ウインドウ；  ４２０  情報オブジェクト；  
５１０−１  速度；  ５１２−１  距離；  ５１４   終端。
【図１】
2010515973.tif 000002
【図２】
2010515973.tif 000003
【図３】
2010515973.tif 000004
【図４】
2010515973.tif 000005
【図５Ａ】
2010515973.tif 000006
【図５Ｂ】
2010515973.tif 000007
【図５Ｃ】
2010515973.tif 000008
2010515973.tif 000009
【図６Ａ】
2010515973.tif 000010
【図６Ｂ】
2010515973.tif 000011
【図６Ｃ】
2010515973.tif 000012
【図６Ｄ】
2010515973.tif 000013
【図７】
2010515973.tif 000014
【図８】
2010515973.tif 000015
【図９】
2010515973.tif 000016
【図１０】
2010515973.tif 000017
【図１１】
2010515973.tif 000018
【図１２】
2010515973.tif 000019
【図１３】
2010515973.tif 000020
【図１４】
2010515973.tif 000021
【図１５】
2010515973.tif 000022
【図１６Ａ】
2010515973.tif 000023
【図１６Ｂ】
2010515973.tif 000024
【図１６Ｃ】
2010515973.tif 000025
【図１７】
2010515973.tif 000026
【図１８】
2010515973.tif 000027
【図１９】
2010515973.tif 000028
【図２０】
2010515973.tif 000029
【図２１】
2010515973.tif 000030
【図２２Ａ】
2010515973.tif 000031
【図２２Ｂ】
2010515973.tif 000032
【図２３】
2010515973.tif 000033
【図２４】
2010515973.tif 000034
【図２５Ａ】
2010515973.tif 000035
【図２５Ｂ】
2010515973.tif 000036
【図２６】
2010515973.tif 000037
【図２７】
2010515973.tif 000038
【図２８】
2010515973.tif 000039
【図２９】
2010515973.tif 000040
【図３０Ａ】
2010515973.tif 000041
【図３０Ｂ】
2010515973.tif 000042
【図３１】
2010515973.tif 000043
【図３２】
2010515973.tif 000044
【図３３Ａ】
2010515973.tif 000045
【図３３Ｂ】
2010515973.tif 000046
【図３３Ｃ】
2010515973.tif 000047
【図３４】
2010515973.tif 000048
【手続補正書】
【提出日】平成21年11月10日(2009.11.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも２つのアニメーションを開始するステップと、
各アニメーションの進行を決定するステップと、
単一のタイマに基づいて前記少なくとも２つのアニメーションのそれぞれを同期するステップと、
を含むことを特徴とする、デバイスのディスプレイ上で表示されたビューをアニメ化するためのマシンによって実施される方法。
【請求項２】
実行されると、
少なくとも２つのアニメーションを開始するステップと、
各アニメーションの進行を決定するステップと、
単一のタイマに基づいて前記少なくとも２つのアニメーションのそれぞれを同期するステップを含む方法をデータ処理システムに実行させる実行可能プログラム命令を格納することを特徴とするマシン可読媒体。
【請求項３】
ユーザ・インタフェース・アニメータによって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化するステップを含むことを特徴とするデータ処理デバイスのディスプレイ上に表示されるアニメーションのためのマシンによって実施される方法。
【請求項４】
実行されると、ユーザ・インタフェース・アニメータによって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化するステップを含む方法をデータ処理システムに実行させる実行可能プログラム命令を格納することを特徴とするマシン可読媒体。
【請求項５】
グラフィックス・ユニットの再描画間隔に関連するタイミング信号によって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ化するステップを含むことを特徴とするデバイスのディスプレイ上に表示されるアニメーションのためのマシンによって実施される方法。
【請求項６】
実行されると、グラフィックス・ユニットの再描画間隔に関連するタイミング信号によって供給される単一のアニメーション・タイマを使用して複数のアニメーションをアニメ
化するステップを含む方法をデータ処理システムに実行させる実行可能プログラム命令を格納することを特徴とするマシン可読媒体。
【請求項７】
ユーザ入力を受け取るように構成された入力パネルと、
前記入力パネルと一体化されたディスプレイ・デバイスと、
少なくとも前記ユーザ入力に基づいてオブジェクトを作成してアニメ化するように構成された、前記入力パネルに結合された中央処理装置と、
前記オブジェクトを格納するように構成された前記プロセッサに結合されたメモリと、
前記入力パネル上、または前記入力パネル近くのユーザ入力の動きを検出するための命令と、前記ユーザ入力を検出したことに応答して、前記ディスプレイ・デバイス上に表示された１つまたは複数のビューをアニメ化するための命令と、単一のタイマに基づいて、前記ディスプレイ・デバイス上に表示された前記１つまたは複数のビューの前記アニメ化を完了するための命令とを含む、前記メモリの中に格納され、前記１つまたは複数のプロセッサによって実行されるように構成された１つまたは複数のプログラムと、
を含むことを特徴とするデバイス。
【国際調査報告】
2010515973.tif 000049
2010515973.tif 000050
2010515973.tif 000051