(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-13
(54)【発明の名称】アニメーション効果表示方法及び電子デバイス
(51)【国際特許分類】
G06F 3/04845 20220101AFI20241106BHJP
G09G 5/00 20060101ALI20241106BHJP
G09G 5/373 20060101ALI20241106BHJP
G09G 5/37 20060101ALI20241106BHJP
【FI】
G06F3/04845
G09G5/00 550B
G09G5/00 530H
G09G5/373
G09G5/37 300
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024523250
(86)(22)【出願日】2022-10-17
(85)【翻訳文提出日】2024-04-30
(86)【国際出願番号】 CN2022125591
(87)【国際公開番号】W WO2023066177
(87)【国際公開日】2023-04-27
(31)【優先権主張番号】202111209898.X
(32)【優先日】2021-10-18
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202111526945.3
(32)【優先日】2021-12-14
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100229448
【氏名又は名称】中槇 利明
(72)【発明者】
【氏名】リウ,チャオ
(72)【発明者】
【氏名】ツゥイ,クン
(72)【発明者】
【氏名】チェン,ジエン
(72)【発明者】
【氏名】チェン,ユイホゥオン
(72)【発明者】
【氏名】リー,ウエイ
【テーマコード(参考)】
5C182
5E555
【Fターム(参考)】
5C182AA02
5C182AA03
5C182AB02
5C182AB08
5C182AB09
5C182AB15
5C182AB25
5C182AB37
5C182AC02
5C182AC03
5C182AC35
5C182AC43
5C182BA03
5C182BA06
5C182BA14
5C182BA28
5C182BA29
5C182BA35
5C182BA39
5C182BA45
5C182BA55
5C182BA66
5C182BC01
5C182BC25
5C182CB13
5C182CB14
5C182CB15
5C182CB44
5C182CB55
5C182DA44
5C182DA65
5E555AA21
5E555BA01
5E555BB01
5E555BC01
5E555CA12
5E555CB12
5E555CC24
5E555CC25
5E555DC26
5E555DC27
5E555DC85
5E555FA00
(57)【要約】
この出願の実施形態は、アニメーション効果表示方法及び電子デバイスを提供し、電子技術の分野に関する。 この出願の一実施形態で提供されるアニメーション効果表示方法によれば、アニメーション効果が表示される前、アプリケーションのUIスレッド又はアプリケーションのレンダリング・スレッド若しくはレンダリング・プロセスが、アニメーション効果の継続時間中にプロパティが変化するコントロールを決定し、各フレームのインターフェース上のコントロールのプロパティを決定し、次いで、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、各フレームのインターフェース上のコントロールのプロパティに基づいて、フレームのインターフェースに対応するビットマップを生成する。各フレームのインターフェース上のコントロールのサイズ及び場所などのプロパティは、アニメーション効果が表示される前に決定されるため、UIスレッドは、各フレームのインターフェース上で測定、レイアウト、並びに描画及び記録(recording)を行う必要がなく、そのため、アニメーション効果の表示は、UIスレッドのブロッキングによって影響を受けない。
【特許請求の範囲】
【請求項1】
電子デバイスに適用されるアニメーション効果表示方法であって、
アプリケーションのUIスレッドによって、アニメーション・トリガ・イベントを受信した後、前記アプリケーションによってセットされた第1のコントロール群の第1のアニメーション効果に関する情報に基づいて、前記第1のアニメーション効果の継続時間と、前記第1のアニメーション効果の開始時間と、前記第1のアニメーション効果の終了フレームに関する記述情報を決定することであって、前記第1のコントロール群は、1つ以上のコントロールを含み、前記アニメーション・トリガ・イベントは、前記第1のアニメーション効果の表示をトリガするために使用される、ことと、
前記第1のアニメーション効果の前記継続時間中にターゲット・フレームの表示データを生成するときに、前記第1のアニメーション効果の前記開始時間、前記第1のアニメーション効果の前記継続時間、前記ターゲット・フレームに対応する時間、及び前記第1のアニメーション効果の前記終了フレームに関する記述情報に基づいて、前記ターゲット・フレームに関する記述情報を決定することと、
前記アプリケーションのレンダリング・スレッド又はレンダリング・プロセスによって、前記ターゲット・フレームに関する前記記述情報に基づいて、前記ターゲット・フレームの前記表示データを生成することと、を含む、方法。
【請求項2】
前記第1のアニメーション効果に関する情報は、システムによって提供されるアニメーション・インターフェースを介して前記アプリケーションによって設定される、請求項1に記載の方法。
【請求項3】
前記第1のアニメーション効果の前記継続時間中にターゲット・フレームの表示データを生成するときに、前記第1のアニメーション効果の開始時間、前記第1のアニメーション効果の前記継続時間、前記ターゲット・フレームに対応する時間、及び前記第1のアニメーション効果の前記終了フレームに関する記述情報に基づいて、前記ターゲット・フレームに関する記述情報を決定することは、具体的には、
前記UIスレッド又は前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記第1のアニメーション効果の前記開始時間、前記第1のアニメーション効果の前記継続時間、前記ターゲット・フレームに対応する前記時間、及び前記第1のアニメーション効果の前記終了フレームに関する記述情報に基づいて、前記ターゲット・フレームに関する前記記述情報を決定することを含む、請求項1又は2に記載の方法。
【請求項4】
前記方法は、
前記UIスレッドによって、前記第1のアニメーション効果の前記終了フレームに関する前記記述情報に基づいて、前記第1のアニメーション効果の前記終了フレームにおけるコントロールのプロパティを決定することと、
前記UIスレッドによって、前記第1のアニメーション効果の前記終了フレームにおける前記コントロールの前記プロパティと、前記第1のアニメーション効果が開始する前に示されたコントロールのプロパティとを比較して、第2のコントロール群を決定することであって、前記第2のコントロール群は、前記第1のアニメーション効果の前記継続時間中にプロパティ変化するコントロールであり、前記第2のコントロール群は、前記第1のコントロール群を含む、ことと、
前記第1のコントロール群が、前記第1のアニメーション効果によって表示され、前記第2のコントロールのうち前記第1のコントロール群以外のコントロールが、第2のアニメーション効果によって表示され、前記アニメーション・トリガ・イベントが、前記第2のアニメーション効果の表示をトリガするためにさらに使用されることと、を含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記ターゲット・フレームに関する前記記述情報は、前記ターゲット・フレームにおける前記第2のコントロール群のうちの前記コントロールのプロパティを決定するためにさらに使用され、前記コントロールの前記プロパティは、前記コントロールのサイズ、前記コントロールの場所、及び前記コントロールの透明度のうちの少なくとも1つを含む、請求項4に記載の方法。
【請求項6】
レンダリング・スレッド又はレンダリング・プロセスによって、前記ターゲット・フレームの前記記述情報に基づいて、前記ターゲット・フレームの前記表示データを生成することは、具体的には、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記ターゲット・フレームに関する前記記述情報に基づいて第1のレンダー・ツリーを更新し、前記レンダリング・スレッド又は前記レンダリング・プロセスによって、更新された第1のレンダー・ツリーに基づいて前記ターゲット・フレームの前記表示データを生成することを含む、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記ターゲット・フレームに関する前記記述情報に基づいて第1のレンダー・ツリーを更新することは、具体的には、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記ターゲット・フレームにおける前記第2のコントロール群のうちの前記コントロールのプロパティに基づいて前記第1のレンダー・ツリーを更新することを含む、請求項6に記載の方法。
【請求項8】
前記方法は、
前記第2のコントロール群が、第3のコントロールを含むことと、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記第3のコントロールのサイズと予め設定されたポリシーとに基づいて、前記第3のコントロールで保持されるコンテンツのサイズを調整することであって、前記保持されるコンテンツは、画像及びテキストのうちの少なくとも1つを含む、ことと、を含む、請求項7に記載の方法。
【請求項9】
前記第3のコントロールは、画像コントロールImageViewであり、前記第3のコントロールで保持される前記コンテンツは、第1の画像であり、
前記ポリシーは、前記第3のコントロールのサイズと前記第1の画像のサイズとを比較し、前記第1の画像をクロッピング又はスケーリングすることを含む、請求項8に記載の方法。
【請求項10】
前記第3のコントロールは、テキスト・コントロールTextViewであり、前記第3のコントロールで保持される前記コンテンツは、第1のテキストであり、
前記ポリシーは、前記第3のコントロールの幅と前記第1のテキストの幅とを比較し、前記第1のテキストに対して行分割又は行結合を行うことを含む、請求項8に記載の方法。
【請求項11】
前記第1のレンダー・ツリーは、前記第1のアニメーション効果の前記終了フレームに対応するレンダー・ツリーであるか、又は
前記第1のレンダー・ツリーは、前記第1のアニメーション効果が開始される前に示されるインターフェースに対応するレンダー・ツリーである、請求項6~10のいずれか一項に記載の方法。
【請求項12】
アプリケーションのUIスレッドによって、アニメーション・トリガ・イベントを受信した後、前記アプリケーションによってセットされた第1のコントロール群の第1のアニメーション効果に関する情報に基づいて、前記第1のアニメーション効果の継続時間と、前記第1のアニメーション効果の開始時間と、前記第1のアニメーション効果の終了フレームに関する記述情報を決定した後、
前記UIスレッドによって、前記第1のアニメーション効果のアニメーション・コールバックCALLBACK_ANIMATIONを登録解除することであって、前記アニメーション・コールバックは、前記第1のコントロール群のうちの前記コントロールのプロパティを修正するように前記UIスレッドをトリガするために使用される、ことをさらに含む、請求項1~11のいずれか一項に記載の方法。
【請求項13】
前記方法は、
前記第1のアニメーション効果の前記継続時間中に、前記UIスレッドによって、第1の瞬間に垂直同期信号を受信し、前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記ターゲット・フレームに関する記述情報に基づいて、第2の瞬間に前記ターゲット・フレームの前記表示データを生成することをさらに含み、
前記第2の瞬間は、前記第1の瞬間の第1の継続時間の後であり、前記第1の継続時間は、プリセットされる、請求項1~12のいずれか一項に記載の方法。
【請求項14】
前記方法は、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記第1のアニメーション効果の前記継続時間中に第2のパラメータを決定することであって、前記第2のパラメータは、前記第1のコントロール群のうちの前記コントロールのサイズと場所の両方を含む、ことと、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記第2のパラメータを前記UIスレッドに送信することと、
前記UIスレッドによって、前記第2のパラメータに基づいて前記第1のコントロール群のうちの前記コントロールの前記サイズと前記場所を決定することと、をさらに含む、請求項1~13のいずれか一項に記載の方法。
【請求項15】
前記アニメーション・トリガ・イベントは、ユーザ対話、ネットワーク・ステータス変化、及び前記電子デバイス上の別のアプリケーションによって前記アプリケーションに送信されたメッセージのうちの少なくとも1つを含む、請求項1~14のいずれか一項に記載の方法。
【請求項16】
電子デバイスであって、前記電子デバイスが、1つ以上のプロセッサ及びメモリを含み、
前記メモリは、前記1つ以上のプロセッサに結合され、前記メモリは、コンピュータ・プログラム・コードを記憶するように構成されており、前記コンピュータ・プログラム・コードは、コンピュータ命令を含み、前記1つ以上のプロセッサは、前記コンピュータ命令を呼び出して、前記電子デバイスが、請求項1~15のいずれか一項に記載の方法を行うことを可能にする、電子デバイス。
【請求項17】
電子デバイスに適用されるチップ・システムであって、前記チップ・システムは、1つ以上のプロセッサを含み、前記プロセッサは、コンピュータ命令を呼び出して、前記電子デバイスが、請求項1~15のいずれか一項に記載の方法を行うことを可能にする、チップ・システム。
【請求項18】
命令を含むコンピュータ可読記憶媒体であって、前記命令が電子デバイス上で動作されるときに、前記電子デバイスは、請求項1~15のいずれか一項に記載の方法を行うことが可能となる、コンピュータ可読記憶媒体。
【請求項19】
コンピュータ可読命令を含むコンピュータ・プログラム製品であって、前記コンピュータ可読命令が1つ以上のプロセッサによって実行されるときに、請求項1~15のいずれか一項に記載の方法が実装される、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
この出願は、2021年10月18日に中国国家知識産権局に出願された「METHOD FOR SEPARATING ANIMATION FROM UI」と題する中国特許出願第202111209898.X号に対する優先権、及び2021年12月14日に中国国家知識産権局に出願された「ANIMATION EFFECT DISPLAY METHOD AND ELECTRONIC DEVICE」と題する中国特許出願第202111526945.3号に対する優先権を主張し、それらの両方がその全体において参照により本明細書に組み込まれる。
【0002】
この出願は、電子技術の分野に関し、特に、アニメーション効果表示方法及び電子デバイスに関する。
【背景技術】
【0003】
電子技術の発展に伴い、より多くの電子デバイスがユーザの日常生活に関与している。追加的に、電子デバイスのディスプレイの解像度、サイズなどのパラメータが高くなるにつれて、より多くのコンテンツが電子デバイスに表示される可能性がある。
【0004】
アプリケーションは、インターフェースに表示されるコントロールのサイズ、幅、高さ、透明度などのプロパティを調整することによって、アニメーション効果をユーザに表示してもよい。
【0005】
しかしながら、従来技術では、UIスレッドが、アニメーション効果を表示するための計算量及び別のタスクをUIスレッドが引き受ける必要がある。その結果、電子デバイス上のアプリケーションでフレーム・フリーズ又はジャンクが発生する可能性が高く、ユーザ体験が低下する。
【発明の概要】
【0006】
この出願の実施形態は、アニメーション効果表示方法及び電子デバイスを提供し、電子技術の分野に関する。この出願の一実施形態で提供されるアニメーション効果表示方法によれば、アニメーション効果が表示される前、アプリケーションのUIスレッド又はアプリケーションのレンダリング・スレッド若しくはレンダリング・プロセスが、アニメーション効果の継続時間中にプロパティが変化するコントロールを決定し、各フレームのインターフェース上のコントロールのプロパティを決定し、次いで、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、各フレームのインターフェース上のコントロールのプロパティに基づいて、フレームのインターフェースに対応するビットマップを生成する。各フレームのインターフェース上のコントロールのサイズ及び場所などのプロパティは、アニメーション効果が表示される前に決定されるので、UIスレッドは、各フレームのインターフェース上で測定、レイアウト、並びに描画及び記録(recording)を行う必要がなく、そのため、アニメーション効果の表示は、UIスレッドのブロッキングによって影響を受けない。
【0007】
第1の態様によれば、この出願の一実施形態は、アニメーション効果表示方法を提供する。本方法は、アプリケーションのUIスレッドが、アニメーション・トリガ・イベントを受信した後、アプリケーションによってセットされた第1のコントロール群の第1のアニメーション効果に関する情報に基づいて、第1のアニメーション効果の継続時間と、第1のアニメーション効果の開始時間と、第1のアニメーション効果の終了フレームに関する記述情報を決定することであって、第1のコントロール群は、1つ以上のコントロールを含み、アニメーション・トリガ・イベントは、第1のアニメーション効果の表示をトリガするために使用される、ことと、第1のアニメーション効果の継続時間中にターゲさらット・フレームの表示データを生成するときに、第1のアニメーション効果の開始時間、第1のアニメーション効果の継続時間、ターゲット・フレームに対応する時間、及び第1のアニメーション効果の終了フレームに関する記述情報に基づいて、ターゲット・フレームに関する記述情報を決定することと、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームに関する記述情報に基づいて、ターゲット・フレームの表示データを生成することと、を含む。
【0008】
前述の実施形態では、アニメーションの継続時間中に、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームに関する記述情報に基づいて、インターフェースを生成し、ターゲット・フレームに関する記述情報は、サイズ、場所、透明度などのターゲット・フレームにおけるコントロールのプロパティを決定するために使用される。アニメーションの継続時間中に、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームの表示データを生成し、UIスレッドは、測定、レイアウト、並びに描画及び記録を通してターゲット・フレームの表示データを生成する必要がない。これにより、UIスレッドのブロッキングによって生じるアニメーション効果のフレーム・フリーズをさらに防ぐ。
【0009】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第1のアニメーション効果に関する情報は、システムによって提供されるアニメーション・インターフェースを介してアプリケーションによって設定される。
【0010】
上述の実施形態では、アプリケーション開発者は、アニメーション・インターフェースを介して任意の1つ以上のコントロールに対してアニメーション効果を設定することができ、アプリケーション開発者が設定を行うことを容易にする。
【0011】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第1のアニメーション効果の継続時間中にターゲット・フレームの表示データを生成するときに、第1のアニメーション効果の開始時間、第1のアニメーション効果の継続時間、ターゲット・フレームに対応する時間、及び第1のアニメーション効果の終了フレームに関する記述情報に基づいて、ターゲット・フレームに関する記述情報を決定することは、具体的には、UIスレッド又はレンダリング・スレッド又はレンダリング・プロセスが、第1のアニメーション効果の開始時間、第1のアニメーション効果の継続時間、ターゲット・フレームに対応する時間、及び第1のアニメーション効果の終了フレームに関する記述情報に基づいて、ターゲット・フレームに関する記述情報を決定することを含む。
【0012】
前述の実施形態では、ターゲット・フレームに関する記述情報は、UIスレッドによって決定されてもよいし、レンダリング・スレッド又はレンダリング・プロセスによって決定されてもよい。レンダリング・スレッド又はレンダリング・プロセスによってターゲット・フレームに関する記述情報が決定されるときに、UIスレッドの負荷をさらに低減することができ、アニメーション効果のフレーム・フリーズの可能性を低減することができる。
【0013】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、本方法は、UIスレッドが、第1のアニメーション効果の終了フレームに関する記述情報に基づいて、第1のアニメーション効果の終了フレームにおけるコントロールのプロパティを決定することと、UIスレッド、又はレンダリング・スレッド又はレンダリング・プロセスが、第1のアニメーション効果の終了フレームにおけるコントロールのプロパティと、第1のアニメーション効果が開始する前に示されたコントロールのプロパティとを比較して、第2のコントロール群を決定することであって、第2のコントロール群は、第1のアニメーション効果の継続時間中にプロパティが変化するコントロールであり、第2のコントロール群は、第1のコントロール群を含む、ことと、第1のコントロール群が、第1のアニメーション効果によって表示され、第2のコントロールのうち第1のコントロール群以外のコントロールが、第2のアニメーション効果によって表示され、アニメーション・トリガ・イベントが、第2のアニメーション効果の表示をトリガするためにさらに使用されることと、をさらに含む。
【0014】
前述の実施形態では、UIスレッドは、アニメーション効果の終了フレームにおけるコントロールのプロパティと、アニメーション効果が開始される前に示された1フレームのインターフェース上のコントロールのプロパティとを比較することによって、アニメーション効果の継続時間中にプロパティが変化するコントロールを決定し、アニメーション効果の継続時間中に各フレームのインターフェース上のコントロールのプロパティを決定し、次いで、ターゲット・フレームの表示データを決定する。これは、アニメーション効果の継続時間中に各フレームのインターフェース上の全てのコントロールのプロパティを決定することと比較して、計算量を低減することができる。
【0015】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、ターゲット・フレームに関する記述情報は、ターゲット・フレームにおける第2のコントロール群のうちのコントロールのプロパティを決定するためにさらに使用され、コントロールのプロパティは、コントロールのサイズ、コントロールの場所、及びコントロールの透明度のうちの少なくとも1つを含む。
【0016】
前述の実施形態では、コントロールのプロパティが、コントロールの表示効果に直接的に影響を与える。コントロールのプロパティを決定することにより、ターゲット・フレームに関する記述情報が決定されてもよい。
【0017】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームに関する記述情報に基づいて、ターゲット・フレームの表示データを生成することは、具体的には、レンダリング・スレッド又はレンダリング・プロセスによって、ターゲット・フレームに関する記述情報に基づいて第1のレンダー・ツリーを更新し、レンダリング・スレッド又はレンダリング・プロセスによって、更新された第1のレンダー・ツリーに基づいてターゲット・フレームの表示データを生成することを含む。
【0018】
前述の実施形態では、アプリケーションのUIスレッドが、レンダー・ツリーを更新した後、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスにレンダー・ツリーを同期させる方法と比較して、この方法は、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドが、ターゲット・フレームに関する記述情報に基づいて、レンダー・ツリーを更新し、更新されたレンダー・ツリーに基づいて、ターゲット・フレームの表示データを生成することができる。この場合、UIスレッドがブロッキングされる場合、アニメーション効果は依然として正常に表示され得る。
【0019】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、レンダリング・スレッド又はレンダリング・プロセスによって、ターゲット・フレームに関する記述情報に基づいて第1のレンダー・ツリーを更新することは、具体的には、レンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームにおける第2のコントロール群のうちのコントロールのプロパティに基づいて、第1のレンダー・ツリーを更新することを含む。
【0020】
前述の実施形態では、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、ターゲット・フレームにおいてプロパティが変化するコントロールのプロパティのみに基づいて、レンダー・ツリーを更新して、ターゲット・フレームの表示データを生成してもよい。
【0021】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第2のコントロール群は、第3のコントロールを含み、レンダリング・スレッド又はレンダリング・プロセスは、第3のコントロールのサイズと予め設定されたポリシーに基づいて、第3のコントロールで保持された内容のサイズを調整し、ポリシーは、保持された内容をクロッピング又はスケーリングするために使用され、保持された内容は、画像及びテキストのうちの少なくとも1つを含む。
【0022】
前述の実施形態では、アニメーション効果の継続時間中に、コントロールのサイズが変化する場合、電子デバイスは、コントロールの内容をさらにクロッピング又はスケーリングしてもよい。
【0023】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第3のコントロールは、画像コントロールImageViewであり、第3のコントロールで保持される内容は、第1の画像である。ポリシーは、第3のコントロールのサイズと第1の画像のサイズとを比較し、第1の画像をクロッピング又はスケーリングすることを含む。
【0024】
前述の実施形態では、アニメーション効果の継続時間中に、コントロールのサイズが変化する場合、電子デバイスは、コントロール上の画像をさらにクロッピング又はスケーリングしてもよい。
【0025】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第3のコントロールは、テキスト・コントロールTextViewであり、第3のコントロールで保持される内容は、第1のテキストである。ポリシーは、第3のコントロールの幅と第1のテキストの幅とを比較し、第1のテキストに対して行分割又は行結合を行うことを含む。
【0026】
前述の実施形態では、アニメーション効果の継続時間中に、コントロールの大きさが変化する場合、電子デバイスは、コントロール上のテキストに対して、さらに行分割又は行結合をさらに行う。
【0027】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第1のレンダー・ツリーが、第1のアニメーション効果の終了フレームに対応するレンダー・ツリーであるか、又は第1のレンダー・ツリーが、第1のアニメーション効果が開始される前に示されるインターフェースに対応するレンダー・ツリーである。
【0028】
また、上記実施形態中に、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスによって、ターゲット・フレームの記述情報に基づいて更新されるレンダー・ツリーは、アニメーション効果の終了インターフェースに対応するレンダー・ツリーであってもよいし、アニメーション効果が開始される前に示されるインターフェースに対応するレンダー・ツリーであってもよい。
【0029】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、アプリケーションのUIスレッドが、アニメーション・トリガ・イベントを受信した後、アプリケーションによってセットされた第1のコントロール群の第1のアニメーション効果に関する情報に基づいて、第1のアニメーション効果の継続時間と、第1のアニメーション効果の開始時間と、第1のアニメーション効果の終了フレームに関する記述情報を決定した後、本方法は、UIスレッドが、第1のアニメーション効果のアニメーション・コールバックCALLBACK_ANIMATIONを登録解除することであって、アニメーション・コールバックは、第1のコントロール群のうちのコントロールのプロパティを修正するようにUIスレッドをトリガするために使用される、ことをさらに含む。
【0030】
前述の実施形態では、電子デバイスは、アニメーション効果からターゲット・フレームに関する記述情報を決定し、コールバックを登録解除し、そのため、アプリケーションのUIスレッドがもはや測定、レイアウト、並びに描画及び記録を行わない。これにより、UIスレッドのブロッキングによって生じるアニメーション効果のフレーム・フリーズを防ぐ。
【0031】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第1のアニメーション効果の継続時間中に、UIスレッドが、第1の瞬間に垂直同期信号を受信し、レンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームの記述情報に基づいて、第2の瞬間にターゲット・フレームの表示データを生成し、第2の瞬間は、第1の瞬間の第1の継続時間の後であり、1の継続時間は、プリセットされる。
【0032】
前述の実施形態では、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、アニメーション効果の継続時間中に各フレームのインターフェースを生成するために、垂直同期信号を独立に要求してもよい。代替的には、UIスレッドが垂直同期信号を受信してからある期間後、アニメーション効果の継続時間中に各フレームのインターフェースが生成される。この場合、UIスレッドは、非アニメーション効果によってトリガされて、コントロールのプロパティを修正し、修正されたコントロールのプロパティを、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドに同期させることができる。
【0033】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、レンダリング・スレッド又はレンダリング・プロセスは、第1のアニメーション効果の継続時間中に第2のパラメータを決定し、第2のパラメータは、第2のコントロール群のうちのコントロールのサイズと場所の両方を含み、レンダリング・スレッド又はレンダリング・プロセスは、第2のパラメータをUIスレッドに送信し、UIスレッドは、第2のパラメータに基づいて、第2のコントロール群のうちのコントロールのサイズ及び場所を決定する。
【0034】
前述の実施形態では、レンダリング・スレッド又はレンダリング・プロセスは、アニメーション効果の継続時間中に、インターフェース上のコントロールの場所及びサイズをUIスレッドに同期させ、UIスレッドは、コントロールの実際の場所及びサイズを知ることができる。
【0035】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、アニメーション・トリガ・イベントは、ユーザ対話、ネットワーク状態変化、及び電子デバイス上の別のアプリケーションによってアプリケーションに送信されるメッセージのうちの少なくとも1つを含む。
【0036】
前述の実施形態中に、アニメーション効果は、複数の方式でトリガされてもよい。
【0037】
第2の態様によれば、この出願の実施形態は、電子デバイスを提供する。電子デバイスは、1つ以上のプロセッサ及びメモリを含む。メモリは、1つ以上のプロセッサに結合され、メモリは、コンピュータ・プログラム・コードを記憶するように構成されている。コンピュータ・プログラム・コードは、コンピュータ命令を含む。1つ以上のプロセッサは、コンピュータ命令を呼び出して、電子デバイスが、以下の手順、すなわち、アプリケーションのUIスレッドが、アニメーション・トリガ・イベントを受信した後、アプリケーションによってセットされた第1のコントロール群の第1のアニメーション効果に関する情報に基づいて、第1のアニメーション効果の継続時間と、第1のアニメーション効果の開始時間と、第1のアニメーション効果の終了フレームに関する記述情報を決定することであって、第1のコントロール群は、1つ以上のコントロールを含み、アニメーション・トリガ・イベントは、第1のアニメーション効果の表示をトリガするために使用される、ことと、第1のアニメーション効果の継続時間中にターゲット・フレームの表示データを生成するときに、第1のアニメーション効果の開始時間、第1のアニメーション効果の継続時間、ターゲット・フレームに対応する時間、及び第1のアニメーション効果の終了フレームに関する記述情報に基づいて、ターゲット・フレームに関する記述情報を決定することと、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームに関する記述情報に基づいて、ターゲット・フレームの表示データを生成することと、を行うことを可能にする。
【0038】
前述の実施形態では、アニメーションの継続時間中に、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームに関する記述情報に基づいて、インターフェースを生成し、ターゲット・フレームに関する記述情報は、サイズ、場所、透明度などのターゲット・フレームにおけるコントロールのプロパティを決定するために使用される。アニメーションの継続時間中に、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームの表示データを生成し、UIスレッドは、測定、レイアウト、並びに描画及び記録を通してターゲット・フレームの表示データを生成する必要がない。これにより、UIスレッドのブロッキングによって生じるアニメーション効果のフレーム・フリーズをさらに防ぐ。
【0039】
第1の態様のいくつかの実施形態に関して、いくつかの実施形態では、第1のアニメーション効果は、アニメーション・インターフェースを介してアプリケーションによって設定される。
【0040】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、具体的には、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、UIスレッド又はレンダリング・スレッド又はレンダリング・プロセスが、第1のアニメーション効果の開始時間、第1のアニメーション効果の継続時間、ターゲット・フレームに対応する時間、及び第1のアニメーション効果の終了フレームに関する記述情報に基づいて、ターゲット・フレームに関する記述情報を決定することを行うことを可能にするように構成されている。
【0041】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、UIスレッドが、第1のアニメーション効果の終了フレームに関する記述情報に基づいて、第1のアニメーション効果の終了フレームにおけるコントロールのプロパティを決定することと、UIスレッド、又はレンダリング・スレッド又はレンダリング・プロセスが、第1のアニメーション効果の終了フレームにおけるコントロールのプロパティと、第1のアニメーション効果が開始する前に示されたコントロールのプロパティとを比較して、第2のコントロール群を決定することであって、第2のコントロール群は、第1のアニメーション効果の継続時間中にプロパティが変化するコントロールであり、第2のコントロール群は、第1のコントロール群を含む、ことと、第1のコントロール群が、第1のアニメーション効果によって表示され、第2のコントロールのうち第1のコントロール群以外のコントロールが、第2のアニメーション効果によって表示され、アニメーション・トリガ・イベントが、第2のアニメーション効果の表示をトリガするためにさらに使用されることと、を行うことを可能にするようにさらに構成されている。
【0042】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、ターゲット・フレームに関する記述情報は、ターゲット・フレームにおける第2のコントロール群のうちのコントロールのプロパティを決定するためにさらに使用され、コントロールのプロパティは、コントロールのサイズ、コントロールの場所、及びコントロールの透明度のうちの少なくとも1つを含む。
【0043】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、具体的には、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、レンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームに関する記述情報に基づいて第1のレンダー・ツリーを更新し、レンダリング・スレッド又はレンダリング・プロセスが、更新された第1のレンダー・ツリーに基づいてターゲット・フレームの表示データを生成することを行うことを可能にするように構成されている。
【0044】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、具体的には、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、レンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームにおける第2のコントロール群のうちのコントロールのプロパティに基づいて、第1のレンダー・ツリーを更新することを行うことを可能にするように構成されている。
【0045】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、第1のコントロール群が、第3のコントロールを含み、レンダリング・スレッド又はレンダリング・プロセスが、第3のコントロールのサイズと予め設定されたポリシーに基づいて、第3のコントロールで保持された内容のサイズを調整することであって、ポリシーは、保持された内容をクロッピング又はスケーリングするために使用され、保持された内容は、画像及びテキストのうちの少なくとも1つを含む、ことを行うこと可能にするようにさらに構成されている。
【0046】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、第3のコントロールは、画像コントロールImageViewであり、第3のコントロールで保持される内容は、第1の画像である。ポリシーは、第3のコントロールのサイズと第1の画像のサイズとを比較し、第1の画像をクロッピング又はスケーリングすることを含む。
【0047】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、第3のコントロールは、テキスト・コントロールTextViewであり、第3のコントロールで保持される内容は、第1のテキストである。ポリシーは、第3のコントロールの幅と第1のテキストの幅とを比較し、第1のテキストに対して行分割又は行結合を行うことを含む。
【0048】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、第1のレンダー・ツリーが、第1のアニメーション効果の終了フレームに対応するレンダー・ツリーであるか、又は第1のレンダー・ツリーが、第1のアニメーション効果が開始される前に示されるインターフェースに対応するレンダー・ツリーである。
【0049】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、具体的には、コンピュータ命令を呼び出して、電子デバイスが以下の手順を行うことを可能にするように構成されている。
【0050】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、UIスレッドが、第1のアニメーション効果のアニメーション・コールバックCALLBACK_ANIMATIONを登録解除することであって、アニメーション・コールバックは、第1のコントロール群のうちのコントロールのプロパティを修正するようにUIスレッドをトリガするために使用される、ことを行うことを可能にするようにさらに構成されている。
【0051】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、第1のアニメーション効果の継続時間中に、UIスレッドが、第1の瞬間に垂直同期信号を受信し、レンダリング・スレッド又はレンダリング・プロセスが、ターゲット・フレームの記述情報に基づいて、第2の瞬間にターゲット・フレームの表示データを生成することであって、第2の瞬間は、第1の瞬間の第1の継続時間の後であり、第1の継続時間は、プリセットされる、ことを行うことを可能にするようにさらに構成されている。
【0052】
第2の態様のいくつかの実施形態に関して、いくつかの実施形態では、1つ以上のプロセッサは、コンピュータ命令を呼び出して、電子デバイスが以下の手順、すなわち、レンダリング・スレッド又はレンダリング・プロセスが、第1のアニメーション効果の継続時間中に第2のパラメータを決定することであって、第2のパラメータは、第2のコントロール群のうちのコントロールのサイズと場所の両方を含む、ことと、レンダリング・スレッド又はレンダリング・プロセスが、第2のパラメータをUIスレッドに送信することと、UIスレッドが、第2のパラメータに基づいて、第2のコントロール群のうちのコントロールのサイズ及び場所を決定することと、を行うことを可能にするようにさらに構成されている。
【0053】
第2の態様のいくつかの実施形態を参照して、いくつかの実施形態では、アニメーション・トリガ・イベントは、ユーザ対話、ネットワーク状態変化、及び電子デバイス上の別のアプリケーションによってアプリケーションに送信されるメッセージのうちの少なくとも1つを含む。
【0054】
第3の態様によれば、この出願の一実施形態は、チップ・システムを提供する。チップ・システムは、電子デバイスに適用され、チップ・システムは、1つ以上のプロセッサを含み、プロセッサは、コンピュータ命令を呼び出して、電子デバイスが、第1の態様又は第1の態様の可能な実装のいずれか1つによる方法を行うことを可能にするように構成されている。
【0055】
第4の態様によれば、この出願の一実施形態は、命令を含むコンピュータ・プログラム製品を提供する。コンピュータ・プログラム製品が電子デバイス上で動作するときに、電子デバイスは、第1の態様又は第1の態様の可能な実装のいずれかによる方法を行うことが可能となる。
【0056】
第5の態様によれば、この出願の実施形態は、命令を含むコンピュータ可読記憶媒体を提供する。命令が電子デバイス上で動作されるときに、電子デバイスは、第1の態様又は第1の態様の可能な実装のいずれかによる方法を行うことが可能となる。
【0057】
第2の態様による電子デバイス、第3の態様によるチップ・システム、第4の態様によるコンピュータ・プログラム製品、及び第5の態様によるコンピュータ記憶媒体は、全て、この出願の実施形態に提供される方法を行うように構成されていることが理解されよう。したがって、方法によって達成され得る有益な効果については、対応する方法における有益な効果を参照のこと。詳細は、ここでは再度説明されない。
【図面の簡単な説明】
【0058】
【
図1A】この出願の一実施形態による、インターフェースの一例の概略図である。
【
図1B】この出願の一実施形態による、インターフェースの一例の概略図である。
【0059】
【
図2A】この出願の一実施形態による、インターフェースの別の例の概略図である。
【
図2B】この出願の一実施形態による、インターフェースの別の例の概略図である。
【0060】
【
図3】この出願の一実施形態による、アニメーション効果表示方法の一例の概略図である。
【0061】
【
図4A】この出願の一実施形態による、別のアニメーション効果表示方法の一例の概略図である。
【
図4B】この出願の一実施形態による、別のアニメーション効果表示方法の一例の概略図である。
【0062】
【
図5】この出願の一実施形態による、アニメーション効果競合の一例の概略図である。
【0063】
【
図6A】この出願の一実施形態による、マルチアニメーション競合におけるインターフェース変化の一例の概略図である。
【
図6B】この出願の一実施形態による、マルチアニメーション競合におけるインターフェース変化の一例の概略図である。
【
図6C】この出願の一実施形態による、マルチアニメーション競合におけるインターフェース変化の一例の概略図である。
【
図6D】この出願の一実施形態による、マルチアニメーション競合におけるインターフェース変化の一例の概略図である。
【
図6E】この出願の一実施形態による、マルチアニメーション競合におけるインターフェース変化の一例の概略図である。
【
図6F】この出願の一実施形態による、マルチアニメーション競合におけるインターフェース変化の一例の概略図である。
【0064】
【
図7A】この出願の一実施形態による、マルチアニメーション・シナリオにおけるビュー・プロパティ変化の一例の概略図である。
【
図7B】この出願の一実施形態による、マルチアニメーション・シナリオにおけるビュー・プロパティ変化の一例の概略図である。
【
図7C】この出願の一実施形態による、マルチアニメーション・シナリオにおけるビュー・プロパティ変化の一例の概略図である。
【0065】
【
図8】この出願の一実施形態による、アニメーション効果表示方法の処理の一例の概略図である。
【0066】
【
図9】この出願の一実施形態による、アニメーション・オブジェクトを決定する一例の概略図である。
【0067】
【
図10】この出願の一実施形態による、各フレームのインターフェース上のビューのプロパティを決定する一例の概略図である。
【0068】
【
図11A】この出願の一実施形態による、アニメーション・パラメータ変化の一例を概略図である。
【
図11B】この出願の一実施形態による、アニメーション・パラメータ変化の一例を概略図である。
【
図11C】この出願の一実施形態による、アニメーション・パラメータ変化の一例を概略図である。
【
図11D】この出願の一実施形態による、アニメーション・パラメータ変化の一例を概略図である。
【0069】
【
図12A】この出願の一実施形態による、マルチアニメーション・シナリオにおけるインターフェース変化の一例の概略図である。
【
図12B】この出願の一実施形態による、マルチアニメーション・シナリオにおけるインターフェース変化の一例の概略図である。
【0070】
【
図13A】この出願の一実施形態による、レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会の一例の概略図である。
【
図13B】この出願の一実施形態による、レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会の一例の概略図である。
【
図13C】この出願の一実施形態による、レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会の一例の概略図である。
【0071】
【
図14】この出願の一実施形態による、レンダリング・スレッドがアニメーション・パラメータを更新する機会の別の例の概略図である。
【0072】
【
図15A】この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【
図15B】この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【0073】
【
図16A】この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【
図16B】この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【
図16C】この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【
図16D】この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【
図16E】この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【0074】
【
図17】この出願の一実施形態による、UIスレッド・データを使用してビューのプロパティを決定する一例の概略図である。
【0075】
【
図18A】この出願の一実施形態による、
図3に示される方法を行うプロセスにおけるレンダー・ツリー変化の一例の概略図である。
【0076】
【
図18B】この出願の一実施形態による、
図4A及び
図4Bに示される方法を行うプロセスにおけるレンダー・ツリー変化の一例の概略図である。
【
図18C】この出願の一実施形態による、
図4A及び
図4Bに示される方法を行うプロセスにおけるレンダー・ツリー変化の一例の概略図である。
【0077】
【
図19】この出願の一実施形態による、電子デバイスのハードウェア構成の一例の概略図である。
【0078】
【
図20】この出願の一実施形態による、電子デバイスのソフトウェア・アーキテクチャの一例の概略図である。
【発明を実施するための形態】
【0079】
この出願の以下の実施形態において使用される用語は、この出願の特定の実施形態を説明するためだけに使用され、この出願を限定することを意図していない。この出願のこの明細書で使用される単数形の「one」、「a」、「the」、「the foregoing」、「this」、及び「the one」という用語はまた、文脈において明確に特定されない限り、複数形を含むことを意図している。この出願で使用される「及び/又は」という用語はまた、1つ以上の関連する列挙された項目のうちのいずれか又は全ての可能な組み合わせを示し、それらを含むとさらに理解されたい。
【0080】
以下の「第1」及び「第2」という用語は、説明の目的のために意図されているにすぎず、相対的重要性の指標若しくは暗示、又は示された技術的特徴の数の暗示的な指標として理解されるべきではない。したがって、「第1」又は「第2」によって限定される特徴は、1つ以上の特徴を明示的又は暗黙的に含んでもよい。この出願の実施態様の説明では、特に特定されない限り、「複数」とは、2以上を意味する。
【0081】
この出願の以下の実施形態において「ユーザ・インターフェース(user interface、UI)」という用語は、アプリケーション又はオペレーティング・システムとユーザとの間の対話及び情報交換のための媒体インターフェースであり、情報の内部形態とユーザが受け入れることができる形態との間の変換を実装する。ユーザ・インターフェースは、Java又は拡張可能なマークアップ言語(extensible markup language、XML)のような特定のコンピュータ言語で書かれたソース・コードである。インターフェースのソース・コードは、解析され、電子デバイス上に描画され、最終的には、ユーザが識別できるコンテンツとして提示される。ユーザ・インターフェースは、一般に、グラフィカル・ユーザ・インターフェース(GUI)の形態で表現され、コンピュータ操作に関連し、かつグラフィック方式で表示されるユーザ・インターフェースである。ユーザ・インターフェースは、電子デバイスのディスプレイに表示されるテキスト、アイコン、ボタン、メニュー、タブ、テキスト・ボックス、ダイアログ・ボックス、ステータス・バー、ナビゲーション・バー、ウィジェットなどのビジュアル・インターフェース要素であってもよい。
【0082】
このインターフェースは、アプリケーションとユーザとの間の対話及び情報交換のための媒体インターフェースとして使用される。垂直同期信号(Vsync-APP)が到着するたびに、電子デバイスはフォアグラウンド・アプリケーションのためにアプリケーション・インターフェースを生成する必要がある。垂直同期信号の周波数は、電子デバイスの画面のリフレッシュ・レートに関連する。例えば、垂直同期信号の周波数は、電子デバイスの画面のリフレッシュ・レートと同じである。
【0083】
具体的には、画面に表示されたコンテンツがリフレッシュされる前に、電子デバイスは、フォアグラウンド・アプリケーションのためのアプリケーション・インターフェースを生成する必要がある。この場合、画面がリフレッシュされるときに、新たに生成されたアプリケーション・インターフェースがユーザに表示される。
【0084】
アニメーション(animation)効果は、アニメーション・オブジェクトに適用される。アニメーション・オブジェクトは、アプリケーションのインターフェース(又はウィンドウ)であってもよいし、アニメーション・オブジェクトは、アプリケーションの1つ以上のコントロール(ビュー、又はビューと呼ばれることがある)であってもよい。ユーザの観点から見ると、アニメーション・オブジェクトは1つ以上のコントロールを含む。アプリケーションの観点から見ると、アニメーション・オブジェクトは1つ以上のビューを含む。ビューは、アプリケーション・インターフェースを構成する基本要素であり、アプリケーション・インターフェース上でユーザに見える1つのコントロールが、1つ以上のビューに対応してもよい。
【0085】
この出願の実施形態では、特に特定されない限り、コントロールとビューの意味は同じであってもよい。
【0086】
時間次元の観点から見ると、ある期間(2つの垂直同期信号の間隔の少なくとも継続時間)において、アニメーション・オブジェクトが連続的かつ滑らかに変化するプロセスがアニメーション効果である。
【0087】
(1)アニメーション効果が設定されたインターフェース及びこの出願の実施形態で提供されるアニメーション効果表示方法
【0088】
(1.1)円アニメーション効果が設定されたインターフェース
【0089】
この出願の実施形態では、アニメーションは、外観に適用されるアニメーション効果、位置に適用されるアニメーション効果、変換ベースのアニメーション効果、及びコンテンツに適用されるアニメーション効果を含むことができる。外観に適用されるアニメーション効果は、透明度、角の丸み、ボーダー色、ボーダー線幅、背景色、影などを含む。場所に適用されるアニメーション効果は、幅/高さ設定、x/y/z座標、x/y/zピボットを含む。変換ベースのアニメーション効果は、並進、回転、スケーリング、及び3D変換を含む。コンテンツに適用されるアニメーション効果には、ぼかし、色強調、グレースケール変更、ノイズ付加などのフィルタ効果を含む。
【0090】
全てのアニメーションは、コントロールの設定可能なプロパティとして使用されてもよい。コントロールのプロパティは、コントロールの表示方式を決定するために使用される。表示方式は、上述した外観に適用されるアニメーション効果、場所に適用されるアニメーション効果、変換ベースのアニメーション効果、コンテンツに適用されるアニメーション効果などを含む。
【0091】
以下、例を使用して、アニメーション効果が設定されたインターフェースを説明する。
【0092】
図1A及び
図1Bは、この出願の一実施形態による、インターフェースの一例の概略図である。
【0093】
図1Aに示すように、電子デバイスの画面に表示されるインターフェースは、デスクトップ・アプリケーションのインターフェースであり、デスクトップ・アプリケーションのインターフェースは、コントロール1A01を含む。コントロール1A01は、書籍アプリケーションのアイコンを含む。
【0094】
デスクトップ・アプリケーションは、ギャラリー・アプリケーションのアイコン、ダイヤルアップ・アプリケーションのアイコン、メッセージ・アプリケーションのアイコン、連絡先アプリケーションのアイコンのような、別のアプリケーションのアイコンをさらに含んでもよい。
【0095】
ユーザによってコントロール1A01を長押しすることに応答して、コントロール1A01はスケールアップされる。
【0096】
コントロール1A01が拡大されるプロセスでは、コントロール1A02がインターフェースに表示される。コントロール1A01の拡大処理はアニメーションである。また、コントロール1A02がステップ・バイ・ステップで明瞭に表示される(例えば、透明度が変化する)場合、コントロール1A02がステップ・バイ・ステップで明瞭に表示されるプロセスもアニメーションである。
【0097】
図2A及び
図2Bは、この出願の一実施形態による、インターフェースの別の例の概略図である。
【0098】
図2Aに示すように、電子デバイスの画面に表示されるインターフェースは、デスクトップ・アプリケーションのインターフェースであり、デスクトップ・アプリケーションのインターフェースは、コントロール2A01を含む。コントロール2A01は、フォルダ1であり、コントロール2A02、コントロール2A03、及びコントロール2A04を含む。コントロール2A02は、ゲーム・アプリケーションのアイコンであり、コントロール2A03は、懐中電灯アプリケーションのアイコンであり、コントロール2A04は、ギャラリー・アプリケーションのアイコンである。
【0099】
ユーザによってコントロール2A02をタップすることに応答して、コントロール2A01が拡大移動され、コントロール2A02、コントロール2A03、及びコントロール2A04が拡大移動される。
【0100】
コントロール2A01、コントロール2A02、コントロール2A03、及びコントロール2A04の拡大移動のプロセスもアニメーションである。
【0101】
(1.2)アニメーション効果表示方法
【0102】
図1A及び
図1Bに示すインターフェースを実装するために、アニメーション・イベントが、コントロール1A01に対して設定される必要がある。
図2A及び
図2Bに示すインターフェースを実装するために、アニメーション・イベントが、コントロール2A01、コントロール2A02、コントロール2A03、及びコントロール2A04に対して設定される必要がある。
【0103】
図3は、この出願の一実施形態による、アニメーション効果表示方法の一例の概略図である。
【0104】
図3に示すように、アニメーション効果表示方法は、4つのステップを含んでもよい。ステップS301:アニメーション・イベント1を作成する。ステップS302:垂直同期信号を受信した後、アニメーション・イベント1のコールバックをトリガし、アニメーション・イベント1のロジックに基づいてビューのプロパティを修正する。ステップS303:測定(measurement)、レイアウト(layout)、描画記録(drawing、ソフトウェア・レンダリングにおける描画と呼ばれることもある)を行い、レンダー・ツリーを生成する。ステップS304:レンダー・ツリーを受信し、レンダー・ツリーに基づいてビットマップを描画する。UIスレッドは、ステップS301、ステップS302、及びステップS303を行う必要がある。レンダリング・スレッドは、ステップS304を行う必要がある。アニメーション効果の最初のフレームに対して、電子デバイスはステップ301、ステップ302、ステップ303、及びステップ304を行う必要がある。アニメーション効果の継続時間中の各フレームに対して、電子デバイスは、ステップS302、ステップS303、及びステップS304を行う必要がある。
【0105】
ステップS301:アニメーション・イベント1を作成する。
【0106】
アニメーション・イベントは、いずれの瞬間でも作成されてもよく、アプリケーションのロジックに関連する。例えば、アニメーション・イベントは、ユーザ入力が受信され、別のスレッド又はプロセスによってアプリケーションに送信されたメッセージ・イベントが受信され、ネットワーク・データが更新を要求した後、作成されてもよい。アニメーション・イベントは、アニメーション効果を実装するための内部ロジック、例えば、アニメーション効果の終了条件や、アニメーション効果の継続時間中の各フレームのビューのプロパティの修正量を含む。
【0107】
アニメーション・イベントが作成された後、コールバックがUIスレッドに登録される(アニメーション・イベントが登録されるのと等価)。例えば、コールバックは、UIスレッドのChoregrapher(Choregrapher)に登録される。コールバックは、UIスレッドが垂直同期信号(Vsync-APP)を受信するたびにアニメーション・イベントを処理し、アニメーション・イベントのロジックに基づいて、ビューのプロパティを修正するようにUIスレッドをトリガするにために使用される。
【0108】
アニメーション効果が終了すると、UIスレッドは、アニメーション・イベントのロジックに基づいて、UIスレッドに登録されたアニメーション・イベントのコールバックをアクティブに登録解除する。
【0109】
ステップS302:垂直同期信号を受信した後、アニメーション・イベント1のコールバックをトリガし、アニメーション・イベント1のロジックに基づいてビューのプロパティを修正する。
【0110】
アプリケーションのUIスレッドは、垂直同期信号(Vsync-APP)信号、例えば
図3に示す垂直同期信号1、垂直同期信号2、及び垂直同期信号3を受信した後、入力イベント(CALLBACK_INPUT)、アニメーション・イベント(CALLBACK_ANIMATION)、トラバーサル・イベント(CALLBACK_TRAVERSAL)、及びコミットメント・イベント(CALLBACK_COMMIT)を順次処理する。
【0111】
アニメーション・イベント(例えば、doCallbacks(CALLBACK_ANIMATION))を処理するプロセスにおいて、アプリケーションのUIスレッドは、アニメーション・イベントのロジックに基づいてビューのプロパティを修正する。
【0112】
例えば、
図1A及び
図1Bに示すインターフェース上では、コントロール1A02のサイズは、幅及び高さが200pxの矩形から幅及び高さが300pxの矩形に拡張され、継続時間は、20フレームである。この場合、コントロール1A02のサイズは、フレーム毎に修正される必要がある。具体的には、アニメーションの最初のフレームでは、コントロール1A02に対応するビューが幅及び高さが205pxの矩形に修正され、アニメーションの第2のフレームでは、コントロール1A02に対応するビューが幅及び高さが210pxの矩形に修正される。
【0113】
ステップS303:測定、レイアウト、描画、記録を行って、レンダー・ツリーを生成する。
【0114】
ビューのプロパティ変化は、アプリケーション・インターフェース上で測定、レイアウト、描画、記録を行うUIスレッドをトリガする。測定は、各ビューのサイズを決定するために使用され、レイアウトは、各ビューのレイアウトを決定するために使用され、描画及び記録方法は、アプリケーションのビットマップを描画するための1つ以上の描画動作を決定し、描画動作をレンダー・ツリーの描画命令リストに記憶するために使用される。
【0115】
入力イベントとアニメーション・イベントの両方が、アプリケーション・インターフェース上の1つ以上のビューのコンテンツに影響を与えることがある。したがって、アプリケーションのメイン・スレッドは、最初に、入力イベントとアニメーション・イベントを処理し、次いで、トラバース・イベントを処理する必要がある。アプリケーションのメイン・スレッドがトラバース・イベントを処理するプロセスにおいて、アプリケーションのUIスレッドは、アプリケーション・インターフェース上で測定、レイアウト、並びに描画及び記録を行い、各ビューのプロパティを決定し、各ビューに対応するレンダリング・ノードを決定し、レンダー・ツリーを生成する。レンダリング・ノードは、レンダリング・プロパティ(property)と描画命令リスト(display list)とを含む。
【0116】
レンダー・ツリーは、UIスレッドによって生成され、アプリケーション・インターフェースを生成するために使用されるデータ構造である。言い換えれば、レンダー・ツリーは、アプリケーションの1フレームのインターフェースを生成するために全ての情報を記録する。レンダー・ツリーは、複数のレンダリング・ノードを含んでもよく、各レンダリング・ノードは、レンダリング・プロパティと描画命令リストとを含み、描画命令リストは、1つ以上の描画動作を含む。
【0117】
描画動作は、データ構造であり、グラフの描画、例えば、線の描画、可変幅の描画、矩形の描画、テキストの描画に使用される。レンダリング・スレッドが実行されるときに、描画動作は、画像処理ライブラリのAPIコール、例えばOpenGLのインターフェース・コールに変換される。例えば、DrawLineOpが、データ構造である。データ構造は、線の長さ、幅などの描画データを含み、さらに、基礎となるグラフィック処理ライブラリのDrawLineOPに対応するインターフェース・コールを含んでもよい。
【0118】
描画命令リストは、バッファであってもよい。バッファは、アプリケーション・インターフェースの1フレームに含まれる全ての描画動作、又はアドレス、シーケンス番号などの全ての描画動作の識別子を記録する。アプリケーションが複数のウィンドウを有するとき、又は異なる表示(display)領域に表示される場ときに、複数のレンダー・ツリーが独立に生成される必要がある。異なるウィンドウ及び表示領域に対応する複数の描画命令リストが独立して生成される。この出願のこの実施形態では、表示領域は、ディスプレイであってもよいし、仮想ディスプレイ(Virtual Display)などであってもよい。仮想ディスプレイは、画面記録中にディスプレイに表示されるコンテンツを電子デバイスが保持する領域であってもよい。
【0119】
ステップS304:レンダー・ツリーを受信し、レンダー・ツリーに基づいてビットマップを描画する。
【0120】
UIスレッドがレンダー・ツリーを生成し、そのレンダー・ツリーをレンダリング・スレッドに転送した後、レンダリング・スレッドは、レンダー・ツリーに基づいてビットマップを生成する。レンダリング・スレッドは、ハードウェア・キャンバス(Hardware Canvas)を取得し、ハードウェア・キャンバス上でレンダー・ツリーに対する描画動作を行って、ビットマップを生成する。ビットマップは、取得のために表面合成器(Surface Flinger)とハードウェア合成ポリシーモジュール(Hardware Composer、HWC)に転送され、表示のためのインターフェースが生成される。
【0121】
図3の方法とは異なり、この出願の一実施形態による
図4A及び
図4Bに示すような別のアニメーション効果表示方式が提供される。
【0122】
図4A及び
図4Bは、この出願の一実施形態による、別のアニメーション効果表示方法の一例の概略図である。
【0123】
図4A及び
図4Bに示すように、アニメーション効果表示方法は、5つのステップを含んでもよい。ステップS401:アニメーション・イベント2を作成する。ステップS402:垂直同期信号を受信した後、アニメーション・イベント2からアニメーション効果の終了インターフェースに関する記述情報(終了フレームに関する記述情報とも呼ばれてもよい)及びアニメーション効果の継続時間に関する記述情報を取得する。ステップS403:アニメーション効果の終了インターフェース上で測定、レイアウト、描画を行い、レンダー・ツリー1を決定する。ステップS404:レンダー・ツリー 1、アニメーション効果の終了インターフェースに関する記述情報、及びアニメーション効果の継続時間に関する記述を受信する。S405:アニメーション効果の終了インターフェースに関する記述情報及びアニメーション効果の継続時間に関する記述情報に基づいて、レンダー・ツリー 1を更新し、更新されたレンダー・ツリー 1に基づいて、ビットマップを生成する。
【0124】
UIスレッドは、ステップS401、ステップS402、及びステップS403を行う必要がある。レンダリング・スレッド又はレンダリング・プロセスは、ステップS404及びステップS405を行う必要がある。アニメーション効果の最初のフレームに対して、電子デバイスは、ステップS401、ステップS402、ステップS403、ステップS404、及びステップS405を行う必要がある。アニメーション効果の継続時間中の各フレームにおいて、電子デバイスは、ステップS405を行う必要がある。レンダリング・プロセスは、アプリケーションに依存しないプロセスであってもよい。
【0125】
ステップS401:アニメーション・イベント2を作成する。
【0126】
アプリケーションのUIスレッドは、アニメーション・インターフェースを介してアニメーション・イベント2を作成する。アニメーション・インターフェースの説明については、ステップS802の以下の説明を参照のこと。詳細は、ここでは再度説明されない。
【0127】
アニメーション・イベント1とは異なり、アニメーション・イベント2に対するアニメーション効果の継続時間中に、コールバックをUIスレッドに登録することはできない。
【0128】
アニメーション・イベント2を作成する機会については、ステップS301のテキスト説明を参照のこと。詳細は、ここでは再度説明されない。
【0129】
ステップS402:垂直同期信号を受信した後、アニメーション・イベント2からアニメーション効果の終了インターフェースに関する記述情報及びアニメーション効果の継続時間に関する記述情報を取得する。
【0130】
ステップS302と異なり、UIスレッドは、垂直同期信号、例えば、図中の垂直同期信号1、垂直同期信号2、及び垂直同期信号3を受信した後、アニメーション・イベント2からアニメーション効果の終了インターフェースに関する記述情報及びアニメーション効果の継続時間に関する記述情報を取得する。追加的に、UIスレッドは、ビューのプロパティを修正せず、ステップS303をトリガしない。
【0131】
任意選択で、この出願のいくつかの実施形態では、UIスレッドは、アニメーション・イベント2からアニメーション効果のステップ・サイズに関する記述情報及びアニメーション効果の継続時間に関する記述情報を取得してもよい。代替的には、UIスレッドは、アニメーション・イベント2から終了インターフェースに関する記述情報、アニメーション効果のステップ・サイズに関する記述情報などを取得してもよい。これは、本明細書において限定されるものではない。
【0132】
なお、UIスレッドは、アニメーション・イベント2から直接的にアニメーション効果の終了インターフェースを取得してもよいし、アニメーション・イベント2から間接的にアニメーション効果の終了インターフェースを決定してもよい。
【0133】
S403:アニメーション効果の終了インターフェース上で測定、レイアウト、及び描画を行い、レンダー・ツリー 1を決定する。
【0134】
UIスレッドは、アニメーション効果の終了インターフェース上で測定、レイアウト、並びに描画及び記録をアクティブに行い、さらに、レンダー・ツリー1を生成する。UIスレッドは、レンダー・ツリー 1、アニメーション効果の終了インターフェースに関する記述情報、アニメーション効果の継続時間に関する記述情報を、レンダリング・スレッドに同期させる。
【0135】
任意選択で、この出願のいくつかの実施形態では、UIスレッドは、レンダー・ツリー1、アニメーション効果の継続時間に関する記述情報、及びアニメーション効果のステップ・サイズに関する記述情報を、レンダリング・スレッド又はレンダリング・プロセスに同期させる。
【0136】
任意選択で、この出願のいくつかの実施形態では、UIスレッドは、レンダー・ツリー1、アニメーション効果の終了インターフェースに関する記述情報、及びアニメーション効果のステップ・サイズに関する記述情報を、レンダリング・スレッド又はレンダリング・プロセスに同期させる。
【0137】
任意選択で、この出願のいくつかの実施形態では、UIスレッドは、アニメーション効果の終了インターフェースに関する記述情報、アニメーション効果のステップ・サイズに関する記述情報、及びアニメーション効果のステップ・サイズに関する記述情報のうちの少なくとも2つの記述情報を、レンダリング・スレッドに同期させるが、レンダー・ツリー1に同期させない。この場合、ステップS405において、レンダリング・スレッドは、アニメーション効果の終了インターフェースに関する記述情報及びアニメーション効果の継続時間に関する記述情報に基づいて、レンダー・ツリー0を更新する。レンダー・ツリー0は、アニメーション効果が開始される前に示されるインターフェースに対応する。
【0138】
任意選択で、本発明の実施形態では、UIスレッドは、アニメーション効果の終了インターフェースに関する記述情報、アニメーション効果のステップ・サイズの記述情報、及びアニメーション効果のステップ・サイズの記述情報のうちの少なくとも2つの記述情報に基づいて、アニメーション効果の継続時間中に各フレームのインターフェース上のビューのプロパティを決定し、さらに、アニメーション効果の継続時間中の各フレームのインターフェース上のビューのプロパティ値及びレンダー・ツリー 1を、レンダリング・スレッド又はレンダリング・プロセスに同期させてもよい。
【0139】
ステップS404:レンダー・ツリー 1、アニメーション効果の終了インターフェースに関する記述情報、及びアニメーション効果の継続時間に関する記述情報を受信する。
【0140】
アプリケーションのレンダリング・スレッドは、メッセージ・キューを介して、UIスレッドによって送信されたデータを受信してもよい。レンダリング・プロセスは、プロセス間通信を介して、UIスレッドによって送信されたデータを受信してもよい。レンダリング・プロセスは、垂直同期信号を独立に要求し受信した後、UIスレッドにデータを要求して取得してもよい。
【0141】
S405:アニメーション効果の終了インターフェースに関する記述情報及びアニメーション効果の継続時間に関する記述情報に基づいて、レンダー・ツリー 1を更新し、更新されたレンダー・ツリー 1に基づいて、ビットマップを生成する。
【0142】
アプリケーションのレンダリング・スレッド又はレンダリング・プロセスは、アニメーション効果の終了インターフェースに関する記述情報及びアニメーション効果が開始される前に示されたインターフェースに基づいて、プロパティが変化するビューを決定する。レンダリング・スレッドは、アニメーション効果の継続時間に基づいてプロパティのステップ・サイズを決定し、さらに、アニメーション効果の継続時間中に各フレームのインターフェース上のビューのプロパティを決定する。
【0143】
アニメーション効果における1フレームのインターフェースを生成する処理については、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスが最初に、アニメーション効果におけるフレームのランク、すなわち、アニメーション効果におけるフレームの具体的な番号を決定する。さらに、フレームのインターフェース上のビューのプロパティ、すなわち、フレームのアニメーション効果に関する記述情報が決定されてもよい。
【0144】
アニメーション効果におけるフレームの具体的な数は、フレームの時間、垂直同期信号の周波数、及びアニメーション効果の開始時間に基づいて決定されてもよい。アニメーション効果の開始時間は、アニメーション効果の最初のフレームのインターフェースに対応する垂直同期信号、例えば
図4A及び
図4bの垂直同期信号1の時間である。代替的には、アニメーション効果の開始時間は、アニメーション・トリガ・イベントの瞬間などであってもよい。これは、本明細書において限定されるものではない。
【0145】
レンダリング・スレッドは、アニメーション効果の継続時間中に各フレームのインターフェース上でビューのプロパティを決定し、垂直同期信号、例えば
図4Bの垂直同期信号2及び垂直同期信号3を受信した後、レンダー・ツリー1におけるビューのプロパティに対応するパラメータを更新し、更新されたレンダー・ツリー1に基づいてビットマップを生成してもよい。
【0146】
アニメーションの継続時間中の最初のフレーム以外の各フレームについては、アプリケーションのレンダリング・スレッド又はレンダリング・プロセスのみがステップS405を行って、アニメーション効果中に各フレームのインターフェースを描画し、さらにアニメーション効果を表示する必要がある。
【0147】
UIスレッド及びレンダリング・スレッド又はレンダリング・プロセスの実行は、異なる垂直同期信号によって別個にトリガされてもよい。例えば、UIスレッドによって受信される垂直同期信号、及びレンダリング・スレッドによって受信される垂直同期信号は、周期が同じで位相が異なる(時間差が固定された)垂直同期信号であってもよい。
【0148】
明らかに、
図3に示すアニメーション効果表示方法によれば、UIスレッドが他のタスクによってブロックされるとき、又はステップS303を行うのに比較的時間がかかるときに、垂直同期信号2が到着する前に、レンダリング・スレッドは、ビットマップを生成することができない。フレーム・フリーズ又はジャンクが発生する。しかしながら、
図4及び
図4B示すアニメーション効果表示方法では、アニメーションの継続時間中に最初のフレーム以外の各フレームのインターフェースを生成する処理において、レンダリング・スレッド又はレンダリング・プロセスは、主に、レンダー・ツリーを更新して、アニメーションの継続時間におけるマルチフレーム・インターフェースを生成するが、UIスレッドが、その処理に関与しないか、又はUIスレッドが、比較的少ない計算量若しくはタスク量を引き受ける。UIスレッドが別のタスクによってブロックされるときに、フレーム・フリーズ又はジャンクは発生しない可能性がある。
【0149】
追加的に、
図3に示すアニメーション効果表示方法では、複数のアニメーション・イベントがある場合、異なるアニメーション効果が互いに競合する。この場合、アニメーション効果は1つしか表示されないため、結果として、インターフェースがジャンプする。これは、ユーザ体験には好ましくない。
【0150】
以下、複数のアニメーション効果が互いに競合する理由と、複数のアニメーション効果によって生じるインターフェース・ジャンプについて、例を用いて説明する。
【0151】
(1.3)アニメーション効果競合
【0152】
図5は、この出願の一実施形態による、アニメーション効果競合の一例の概略図である。
【0153】
図5に示すように、電子デバイスが
図3に示すアニメーション効果表示方法を行う処理は、以下のステップを含む。
【0154】
S501:アニメーション・イベント4を作成する
【0155】
アニメーション効果3の継続時間中に、ユーザ入力、別のメッセージなどに応答して、UIスレッドがアニメーション・イベント4を作成し、アニメーション・イベント4に対応するコールバックをUIスレッドに登録する。
【0156】
S502:垂直同期信号を受信した後、アニメーション・イベント3のコールバック及びアニメーション・イベント4のコールバックをトリガし、アニメーション・イベント3のロジックに基づいてビューのプロパティを修正し、次いで、アニメーション・イベント4のロジックに基づいてビューのプロパティを修正する。
【0157】
垂直同期信号1を受信した後、アニメーション・イベント3のコールバック及びアニメーション・イベント4のコールバックがトリガされる。UIスレッドは、アニメーション・イベント3のロジックに基づいて、ビューのプロパティを別個に修正し、アニメーション・イベント4のロジックに基づいて、ビューのプロパティを修正する。この場合、アニメーション・イベント4のロジックは、アニメーション・イベント3によるビューのプロパティの修正を上書きしてもよい。
【0158】
例えば、アニメーション・イベント3によって修正されたビューはビュー1を含み、アニメーション・イベント4によって修正されたビューはビュー1を含む。修正前、ビュー1は20ピクセルの正方形である。ビュー1は、アニメーション・イベント3のロジックに基づいて、30pxの正方形に修正され、ビュー1は、アニメーション・イベント4のロジックに基づいて、15pxの正方形に修正される。UIスレッドは、アニメーション・イベント3のロジックに基づいて、ビューのプロパティを別個に修正し、アニメーション・イベント4のロジックに基づいて、ビュー1のプロパティを修正する。ビュー1は、最終的に15pxの正方形になる。
【0159】
この場合、実際には、UIスレッドはアニメーション・イベント3のロジックを実行しておらず、アニメーション効果イベント3に対応するアニメーション効果が正しく表示されない。結果として、インターフェースがジャンプする。このインターフェースは、
図6A~
図6Fに示すようにジャンプする。
【0160】
次いで、ステップS303及びステップS304が行われる。ステップ303及びステップS304の内容については、
図3に対応する前述の説明を参照のこと。詳細は、ここでは再度説明されない。
【0161】
図6A~
図6Fは、この出願の一実施形態による、マルチアニメーション競合におけるインターフェース変化の一例の概略図である。
【0162】
図6Aに示すように、電子デバイスの画面上には、デスクトップ・アプリケーションのインターフェースが表示される。デスクトップ・アプリケーションのインターフェースは、コントロール2A01を含む。親コントロールとして、コントロール2A01は、さらに、いくつかの子コントロールを含んでもよく、例えば、コントロール2A02、コントロール2A03、及びコントロール2A04を含む。
【0163】
コントロール2A01は、デスクトップ・アプリケーション内のフォルダ又はカードであってもよい。例えば、
図6~
図6Eにおいて、コントロール2A01は、フォルダ1であり、コントロール2A02は、ゲーム・アプリケーションのアイコンを含み、コントロール2A03は、懐中電灯アプリケーションのアイコンを含み、コントロール2A04は、ギャラリー・アプリケーションのアイコンを含む。
【0164】
図6Aに示すインターフェースは、アニメーション効果1が開始される前に示されるインターフェースと考えられてもよい。
【0165】
ユーザによってコントロール2A01をタップすることに応答して、この対話がアニメーション効果1をトリガしてもよい。アニメーション効果1は、コントロール2A01、コントロール2A02、コントロール2A03、コントロール2A04に適用され、すなわち、コントロール2A01、コントロール2A02、コントロール2A03、及びコントロール2A04は、アニメーション効果1のアニメーション・オブジェクトである。アニメーション効果1は、アニメーション・オブジェクトのサイズを徐々に大きくし、アニメーション・オブジェクトの場所をインターフェースの中心に向かって移動させる。
【0166】
図6Bに示すように、コントロール2A02の大きさが徐々に大きくなり、例えば高さ及び/幅が大きくなり、コントロール2A02の場所が変化する。
図6Bに示すインターフェースは、アニメーション効果1の開始インターフェースと、アニメーション効果1の中間インターフェースと、を含む。
【0167】
図6Cに示すように、コントロール2A02のサイズが連続的に大きくなるにつれて、電子デバイスに表示されるインターフェースの変化は、アニメーション効果1の中間インターフェースがアニメーション効果1の終了インターフェースに変化するプロセスである。
【0168】
図6Dに示すように、アニメーション効果1が終了する前に、ユーザは、デスクトップ上のコントロール2A01に属さない部分をタップするか、別の対話方式、例えば「戻る(back)」対話ジェスチャなどを使用して、
図6Aに示すインターフェースに戻る。この場合、インタラクションは、アニメーション効果2をトリガする。アニメーション効果2は、コントロール2A01、コントロール2A02、コントロール2A03、コントロール2A04に適用され、すなわち、コントロール2A01、コントロール2A02、コントロール2A03、及びコントロール2A04は、アニメーション効果2のアニメーション・オブジェクトである。アニメーション効果2の効果は、アニメーション・オブジェクトのサイズが徐々に小さくなり、アニメーション・オブジェクトの場所が
図1Aのコントロール2A01の場所に向かって移動することである。
【0169】
アニメーション効果1はまだ終了しておらず、アニメーション効果2が発生している。アニメーション効果1とアニメーション効果2が適用されるアニメーション・オブジェクトは、交差しており、アニメーション効果1とアニメーション効果2の両方が、アニメーション・オブジェクトに対応するビューのサイズ及び場所を修正する必要がある。このため、アニメーション効果1とアニメーション効果2との間で競合が発生する。この場合、
図6Eに示すインターフェースと、
図6Fに示すインターフェースの2つの方式でインターフェースが変化してもよい。
【0170】
図6Eに示すように、ユーザによって、デスクトップ上のコントロール2A01に属さない部分をタップするか、別の対話方式、例えば「戻る(back)」対話ジェスチャなどを使用することに応答して、アニメーション効果1の中間インターフェースがアニメーション効果2の開始インターフェースとして使用され、アニメーション効果2のロジックに基づいてビューのプロパティの修正が開始される。例えば、アニメーション効果1の中間インターフェースから開始し、アニメーション効果2の終了インターフェースに変化する。
【0171】
代替的には、
図6Fに示すように、ユーザによって、デスクトップ上のコントロール2A01に属さない部分をタップするか、他の対話方式、例えば「戻る(back)」インタラクションジェスチャなどを使用することに応答して、電子デバイスによって表示されるインターフェースの変化が2つのステップに分割される。
【0172】
(1)
図6Fでは、電子デバイスによって表示されるコンテンツは、アニメーション効果1の中間インターフェースからアニメーション効果1の終了インターフェースに直接ジャンプする。
【0173】
(2)
図6Fでは、次のフレームでは、アニメーション効果1の終了インターフェースがアニメーション効果2の開始インターフェースとして使用され、アニメーション効果2のロジックに基づいて、徐々にアニメーション効果2の終了インターフェースに変化する。具体的には、
図6Fでは、コントロール2A01が
図6Aに示すサイズに変化するまで徐々に小さくなり、コントロール2A01の場所が
図6Aに示すコントロール2A01の場所に戻る。
【0174】
明らかに、複数のアニメーション効果が競合するときに、インターフェースの変化がジャンプするか、又はインターフェースの変化速度がジャンプする。結果として、
図7A、
図7B、及び
図7Cに示すように、インターフェースの変化が連続的でなく、これは、ユーザの視覚的な習慣に合わない。これにより、ユーザ体験が低下する。
【0175】
図7A、
図7B、及び
図7Cは、この出願の一実施形態による、マルチアニメーション・シナリオにおけるビュー・プロパティ変更の一例の概略図である。
【0176】
図7Aに示すように、アニメーション効果1の推定継続時間は、T1~T3であり、アニメーション効果2の推定継続時間は、T2~T4である。T1は、T2よりも小さく、T2は、T3よりも小さく、T3は、T4よりも小さい。推定継続時間は、アニメーション効果のためにアプリケーションによって設定される期間である。アニメーション効果1は、ビューの高さを大きくし、アニメーション効果2は、ビューの高さを小さくする。
【0177】
【0178】
図7Bに示すように、T1からT2まで、アニメーション効果1のロジックに基づいて、ビューのプロパティが変化し、例えばビューの高さが線形的に大きくなり、T2では、アニメーション効果1とアニメーション効果2が競合するため、高さなどのビューのプロパティがジャンプする。T2からT4まで、アニメーション効果2のロジックに基づいて、ビューのプロパティが変化し、例えばビューの高さが直線的に小さくなる。
【0179】
明らかに、瞬間T2では、ビューのプロパティ、例えば、高さが、アニメーション効果1とアニメーション効果2との間の遷移点でジャンプする。
【0180】
図7Cに示すように、T1からT2まで、アニメーション効果1のロジックに基づいて、ビューのプロパティが変化し、例えば、ビューの高さが線形的に大きくなり、T2では、アニメーション効果1とアニメーション効果2が競合するため、アニメーション効果2のロジックに基づいて、ビューのプロパティの変化が開始し、例えばビューの高さが線形的に小さくなる。
【0181】
明らかに、瞬間T2では、ビューのプロパティ、例えば、高さ変化速度が、アニメーション効果1とアニメーション効果2との間の遷移点でジャンプする。
図7B、及び
図7Cでは、アニメーション効果1の実際の継続時間は、T2~T1である。アニメーション効果2の継続時間は、T2~T4である。
【0182】
なお、
図7A、
図7B、
図Cに示した内容に加えて、異なるライプのアニメーション効果が競合する場合、インターフェースが誤って表示されるか、又はジャンプする可能性もある。
【0183】
(2)本願の実施形態で提供されるアニメーション効果表示方法
【0184】
この出願の一実施形態で提供されるアニメーション効果表示方法によれば、この出願のこの実施形態は、最初に、アニメーション効果を実装するためのアニメーション・インターフェースを提供する。アニメーション・インターフェースは、1つ以上の機能、方法、及び方式であってもよい。アプリケーションは、アニメーション・インターフェースを介して、コントロールのプロパティ、アニメーション効果などの情報をセットし、そのため、このアプリケーションで提供されるアニメーション・フレームワークが、その情報に基づいて、対応するアニメーション・インターフェースを生成する。アニメーション・インターフェースにセットされ得る情報は、アニメーション効果の終了インターフェース及びアニメーション効果の継続時間、アニメーション効果のステップ・サイズに関する記述情報及びアニメーション効果の継続時間、又はアニメーション効果のステップ・サイズに関する記述情報及びアニメーション効果の終了インターフェースに関する記述情報を含む。アニメーション・インターフェースは、アプリケーション開発者の作業負荷を軽減するのに役立つ。追加的に、アプリケーション開発者がアニメーション効果プロセスにおける各フレームのインターフェースを設定しなくてもよく、レンダリング・スレッド又はレンダリング・プロセスがアニメーション効果プロセスにおける各フレームのインターフェースを独立に決定する。
【0185】
この出願の一実施形態で提供されるアニメーション効果表示方法によれば、アニメーション効果を表示するプロセスにおいて、ビューのプロパティは修正されないが、レンダー・ツリーのレンダリング・プロパティにおけるアニメーション・パラメータが追加及び修正されて、アニメーション効果の連続的なプロセスにおいて各フレームのインターフェースを描画する。具体的には、アニメーション・パラメータは、レンダー・ツリーを更新するために使用されるパラメータであってもよく、アニメーション効果プロセスにおける1フレームのインターフェース上のコントロールの変更されたプロパティを含んでもよい。
【0186】
この出願の一実施形態で提供されるアニメーション効果表示方法によれば、再度のアニメーション処理において、ビューのプロパティではなく、レンダー・ツリーのレンダリング・プロパティのパラメータのみが修正されればよいため、UIスレッドは、アニメーション・イベントに応答することも、測定、レイアウト、並びに描画及び記録を行わなくてもよい。これは、ジャンクを避けるのに役立つ。レンダリング・スレッド又はレンダリング・プロセスは、レンダー・ツリーのレンダリング・プロパティを修正することを担当する。
【0187】
この出願のこの実施形態で提供されるアニメーション効果表示方法によれば、最終的に、複数のアニメーション効果が競合する場合、この出願のこの実施形態で提供されるアニメーション効果表示方法は、アニメーション効果の終了インターフェースに基づいて表示内容を修正するため、連続的なインターフェース変化(又は連続的なインターフェース変化速度)が実装され得る。これにより、より滑らかなインターフェースが実装され、ユーザ体験が向上する。
【0188】
以下、この出願の一実施形態で提供されるアニメーション効果表示方法を、例を使用して説明する。
【0189】
(2.1)アニメーション効果表示のプロセス
【0190】
図8は、この出願の一実施形態による、アニメーション効果表示方法の処理の一例の概略図である。
【0191】
図8に示すように、この出願のこの実施形態で提供されるアニメーション効果表示方法の手順は、以下のステップを含む。
【0192】
S801:アプリケーションのUIスレッドが、アニメーション・イベントを作成する。
【0193】
アニメーション・イベントは、いずれの瞬間でも作成されてもよく、アプリケーションのロジックに関連する。例えば、アニメーション・イベントは、ユーザ入力が受信され、別のスレッド又はプロセスによってアプリケーションに送信されたメッセージ・イベントが受信され、ネットワーク・データが更新を要求した後、作成されてもよい。アニメーション・イベントは、アニメーション効果を実装するための内部ロジックを含む。説明を簡単にするために、アプリケーションのUIスレッドをトリガしてアニメーション・イベントを作成するメッセージが、アニメーション・トリガ・イベントと呼ばれる。
【0194】
この出願のこの実施形態では、アニメーション・イベントが作成された後、アプリケーションのUIスレッドのコリオグラファーにコールバックが一度登録される。このコールバックは、アニメーション・イベントが作成された後に最初の垂直同期信号が到着したときに、アニメーション・イベントを処理するためにアプリケーションのUIスレッドをトリガするために使用される。
【0195】
図3、
図4A、及び
図4Bに示す方法におけるアニメーション・イベントを区別するために、以下では、
図3に示す方法におけるアニメーション・イベントは非暗黙的なアニメーションであり、
図4A及び
図4Bにおけるアニメーション・イベントは暗黙的なアニメーションである。この実施形態で提供されるアニメーション・インターフェースを介してアプリケーション開発者によって作成されるアニメーション・イベントは、暗黙的なアニメーションである。
【0196】
図3、
図4A及び
図4Bの内容を比較して説明しやすくするために、アニメーション・イベントを、単純に、暗黙的なアニメーション及び非暗黙的なアニメーションと呼ぶことに留意されたい。これは、この出願のこの実施形態におけるアニメーション・インターフェースを介して作成されるアニメーション・イベントに対して、いかなる制限も課さない。
【0197】
任意選択で、この出願のいくつかの実施形態では、暗黙的なアニメーションは、非暗黙的なアニメーションに変換されてもよい。なお、変換処理は、初めてアプリケーションをインストールするか、又は開始するプロセスで発生してもよいし、変換処理は、コンパイル・プロセスにおいて発生してもよいが、これは、本明細書では限定されない。
【0198】
例えば、非暗黙的なアニメーションは、アニメーション・オブジェクト、各フレームの垂直同期信号のコールバック、ビューのプロパティの修正、アニメーションの終了条件などを決定する。各フレームの垂直同期信号のコールバックは、アニメーションが終了条件を満たさないときに、アニメーション・イベントを処理するようにUIスレッドを常にトリガするために使用される。この場合、アニメーション・イベントを暗黙的なアニメーションに変換するプロセスは、以下の2つのステップを含んでもよい。
【0199】
最初に、非暗黙的なアニメーションの各フレームの垂直同期信号のコールバックがブロック又はインターセプトされ、そのため、非暗黙的なアニメーションは、ビューのプロパティも修正しないし、測定、レイアウト、並びに描画及び記録を行うようにアプリケーションのUIスレッドをトリガもしない。
【0200】
次いで、暗黙的なアニメーションに必要なパラメータが決定される。例えば、垂直同期信号(Vsync-APP)の時間情報を修正することにより、アニメーションの終了インターフェース及び継続時間が決定される。代替的に、いくつかの非暗黙的なアニメーションでは、そのアニメーションのアニメーション・オブジェクト、各アニメーション・オブジェクトの各プロパティのステップ・サイズ、アニメーションの継続時間、アニメーションの終了インターフェースなどが直接的に決定されてもよい。
【0201】
S802:アプリケーションのUIスレッドが、垂直同期信号を受信した後、アニメーション・イベントからアニメーション効果の終了インターフェース及びアニメーション効果の継続時間を決定する。
【0202】
アプリケーションのUIスレッドは、垂直同期信号を受信した後、アニメーション・イベントを処理する。アニメーション・イベントは、アニメーション・インターフェースによって設定される。アニメーション・インターフェースのフォーマットは、以下の通りである。アニメーション・インターフェースの名前(継続時間、終了インターフェースに関する記述情報)アニメーション・インターフェースの名前(継続時間、変化カーブ、終了インターフェースに関する記述情報)アニメーション・インターフェースの名前(ステップ・サイズに関する記述情報、終了インターフェースに関する記述情報)アニメーション・インターフェースの名前(継続時間、終了インターフェースに関する記述情報)などであってもよいが、これは、本明細書では限定されない。
【0203】
ビューの場所、サイズ、透明度などに加えて、終了インターフェースの記述は、テーマ(スタイル)を含んでもよい。終了インターフェースの記述は、アニメーション効果が開始する前に示されたインターフェースと比較した増分、例えば、ビュー1における幅増加であってもよい。
【0204】
ステップ・サイズに関する記述情報は、前フレームのインターフェース上のコントロールのプロパティと比較したレンダリングが現在行われているインターフェース上のコントロールのプロパティの変動を含んでもよい。
【0205】
アニメーション・インターフェースのフォーマットが、アニメーション・インターフェースの名前(継続時間、変化カーブ及び最終インターフェース)である場合、アニメーション・インターフェースは、以下の通りであってもよい。
【数1】
【0206】
animateToは、アニメーション・インターフェースの名前である。duration:3000は、継続時間が3000msであることを示し、cure:Curve.Linearは、カーブがリニア・カーブであることを示す。view1.Height=800 view1.Width=400は、アニメーションの終了インターフェース上のビュー1の高さが800、幅が400であること、すなわち、アニメーションの終了フレームに関する記述情報であることを示す。
【0207】
アニメーション・インターフェースは、システムに提供される1つ以上の機能及び方法である。アプリケーション開発者は、アニメーション・インターフェースを呼び出すことによってインターフェース上のコントロールのためのアニメーション効果を設定し、アニメーション効果に関する情報を設定してもよい。アニメーション効果に関する情報は、アニメーション効果の継続時間、アニメーション効果の終了フレームに関する記述情報などを含む。
【0208】
アプリケーションを動作させるプロセスにおいて、アプリケーションは、アニメーション・トリガ・イベントを受信した後、アプリケーションは、アニメーション・インターフェースを介してシステムにアニメーション効果に関する情報を提供し、システムは、その情報に基づいて、アニメーション・プロセスにおける各フレームのインターフェースを生成してもよい。
【0209】
このフォーマットでは、電子デバイスは、アニメーションの終了インターフェースと、アニメーションが開始される前に示されるインターフェースとの間の差に基づいて、アニメーション・オブジェクトを決定してもよい。
【0210】
アニメーション・イベントは、UIスレッドのコリオグラファーに一度だけ登録されてもよいことに留意されたい。
【0211】
S803:アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、アニメーション効果の終了インターフェース及びアニメーション効果の継続時間に基づいて、レンダー・ツリーを更新し、更新されたレンダー・ツリーに基づいてビットマップを生成する。
【0212】
UIスレッドは、アニメーション効果の終了インターフェース及びアニメーション効果の継続時間を決定した後、アニメーション効果の終了インターフェース及びアニメーション効果の継続時間を、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドに転送してもよい。この場合、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、アニメーション効果の継続時間中に各フレームのインターフェース上のビューのプロパティを決定し、レンダー・ツリーを直接的に更新し、更新されたレンダー・ツリーに基づいて、ビットマップを生成してもよい。
【0213】
1フレームのインターフェースを生成するプロセスにおいて、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、アニメーション効果における現在のフレームの番号を決定し、さらに、フレームのインターフェース上のビューのプロパティを決定する必要がある。アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、受信した垂直同期信号の数、垂直同期信号の瞬間などを使用するなどの複数の方式で、アニメーション効果における現在のフレームの番号を複数の方式で決定してもよい。これは、本明細書において限定されるものではない。アニメーション効果における現在のフレームの番号は、アニメーション効果におけるフレームのランクとも呼ばれてもよい。言い換えれば、フレームに関する記述情報には、フレームのインターフェース上のビューのプロパティを含む。
【0214】
アプリケーションによって表示されるインターフェースは、複数のビューをネスト化して形成され、異なるビューは親子関係を有する。したがって、ビューのレンダー・ツリーをトラバースすることによって生成されるレンダリング・ノード間の親子関係は、ビューの親子関係と同じである。言い換えれば、ビュー間の親子関係は、レンダリング・ノード間のネスト関係を決定し、そのため、レンダリング・スレッドは、レンダー・ツリーに基づいてビットマップを生成するときに、アプリケーション・インターフェースを正しくレンダリングすることができる。
【0215】
1つのビューは、1つ以上のレンダリング・ノードに対応してもよい。ルート・ビュー(DecorView)は、ルート・レンダリング・ノード(Root Render Node)に対応する。言い換えれば、レンダリング・ノード間のネスト関係は、ビューの親子関係に対応する。
【0216】
例えば、アプリケーション・インターフェースの構造は以下のようになる。すなわち、ルート・ビューは、アプリケーションのPhoneWindowに担持され、ルート・ビューのサブビューは、ビュー1とビュー2であり、ビュー2のサブビューは、ビュー3である。この場合、アプリケーションのUIスレッドによって生成されるレンダー・ツリーの構造は、以下の通りである。すなわち、PhoneWindowに対応するルート・レンダリング・ノードがレンダー・ツリーのルート・ノードであり、ルート・レンダリング・ノードの子ノードがルート・ビューに対応するレンダリング・ノード0であり、レンダリング・ノード0の子ノードがビュー1に対応するレンダリング・ノード1及びビュー2に対応するレンダリング・ノード2であり、レンダリング・ノード2の子ノードがビュー3に対応するレンダリング・ノード3である。ビューとレンダリング・ノードの対応関係は、レンダリング・ノードが対応するビューで行われる全ての描画動作を含むことを意味する。1つのビューは、1つ以上のレンダリング・ノードに対応してもよい。
【0217】
図9及び
図10に示す内容を参照して、アニメーション効果の継続時間中に各フレームのインターフェース上のビューのプロパティを決定するための方法を、例を使用して説明する。また、1フレームのインターフェース上のビューのプロパティを、1フレームのインターフェースに関する記述情報と呼ぶことがある。
【0218】
図9は、この出願の一実施形態による、アニメーション・オブジェクトを決定する一例の概略図である。
【0219】
図9に示すように、アプリケーション・インターフェースは、ビュー1、ビュー2、及びビュー3を有し、ビュー1、ビュー2、及びビュー3の水平(ビューの幅方向が水平)間隔は固定されている。
【0220】
ビュー2に、幅をB1からB2に変化するアニメーション効果が設定されているとき、B2はB1よりも大きく、0よりも大きい。明らかに、ビュー2は、非暗黙的なアニメーションのアニメーション・オブジェクトである。しかしながら、アニメーション効果が開始される前に示されるインターフェースをアニメーション効果の終了インターフェースと比較すると、ビュー2の幅の変化のため、ビュー3の場所が変化する。したがって、
図3に示す方法では、非暗黙的なアニメーションのロジックに基づいてビューのプロパティを修正した後、アプリケーションのUIスレッドが、アニメーション後のインターフェースの正確性を確保するために、測定、レイアウト、並びに描画及び記録を行う必要がある。
【0221】
明らかに、
図9の方法では、
図4A、
図4B、及び
図8に示した方法と比較して、明らかに、ビュー2及びビュー3のプロパティが変化するため、アニメーション・オブジェクトがビュー2及びビュー3であると決定されてもよい。
【0222】
任意選択で、この出願のいくつかの実施形態では、アニメーション・オブジェクトは、アニメーション効果の中間インターフェース上でのみ変化し、アニメーションの終了インターフェース上、又はアニメーションが開始される前に示されるインターフェース上では変化しない。アプリケーションのUIスレッドは、垂直同期信号の時間情報を調整することにより、アニメーション処理における各フレームの変化したビューのセットがアニメーション・オブジェクトであると決定してもよい。
【0223】
図10は、この出願の一実施形態による、各フレームのインターフェース上のビューのプロパティを決定する一例の概略図である。
【0224】
図10に示すように、アニメーション・イベントは、暗黙的なアニメーションであり、アニメーションが開始される前に示されるインターフェースと、アニメーションの終了インターフェースとがある。アプリケーションのメイン・スレッド及びレンダリング・スレッド又はレンダリング・プロセスは、アニメーションが開始される前に示されるインターフェースをアニメーションの終了インターフェースと比較して、変化したコントロールがアニメーションに関連するアニメーション・オブジェクトであると決定してもよい。例えば、アニメーション・オブジェクトは、コントロール2A01を含む。
【0225】
コントロール2A01の場所は、(x0,y0)から(x1,y1)に変化し、すなわち、コントロール2A01は、アニメーション・イベントに関連するアニメーション・オブジェクトである。追加的に、コントロール2A01の高さ/幅は、元の高さ/幅のS倍に変化し、アニメーション継続時間は、30フレームである。さらに、各フレームのインターフェース上のコントロール2A01の場所及びサイズがさらに決定されてもよい。コントロール2A01のQ番目のフレーム(Qは、アニメーションが開始される前に示されるインターフェースから計算される)は、(x0+Q*δX,y0+Q*δY)であり、式中、δX=(x1-x0)/30、及びδY=(y1-y0)/30である。
【0226】
各フレームのアニメーション・パラメータの値は、(x0+Q*δX,y0+Q*δY)である。アニメーション・パラメータのステップ・サイズに関する記述情報は、δX=(x1-x0)/30、δY=(y1-y0)/30であってもよい。具体的には、アニメーション・パラメータは、アニメーション効果における1フレームのインターフェース上のビューのプロパティを決定するために使用される情報であり、例えば、前述のアニメーション効果の終了インターフェースに関する記述情報、前述のアニメーション効果の継続時間に関する記述情報などである。代替的に、アニメーション・パラメータは、アニメーション効果における1フレームのインターフェース上のビューのプロパティに関する情報である。
【0227】
以下では、説明を容易にするために、アニメーション・パラメータは、1フレームのインターフェース上のビューのプロパティを表すために使用されるか、又は1フレームのインターフェース上のビューのプロパティを決定するために使用される。言い換えれば、アニメーション・パラメータは、1フレームのインターフェースに関する記述情報を表すか、又はアニメーション・パラメータは、1フレームのインターフェースに関する記述情報を決定するために使用されるパラメータである。
【0228】
前述の単一のアニメーション・イベントにおいてアニメーション・パラメータを決定するプロセスである。以下、複数のアニメーション・イベントにおいてアニメーション・パラメータを決定するプロセスを主に説明する。
【0229】
任意選択で、この出願のいくつかの実施形態では、アニメーション・オブジェクトのアニメーション・パラメータが複数のアニメーション・イベントによって修正される場合、ステップS1002では、レンダー・ツリーを更新するために使用される最終アニメーション・パラメータを決定するために、各アニメーション・イベントによって独立に決定されるアニメーション・パラメータに基づいてベクトル重ね合わせが行われる。
【0230】
任意選択で、この出願のいくつかの実施形態では、アニメーション・オブジェクトのアニメーション・パラメータが複数のアニメーション効果によって修正される場合、例えば、アニメーション・オブジェクトのアニメーション・パラメータがアニメーション効果1及びアニメーション効果2によって修正される(アニメーション効果2がアニメーション効果1の継続時間中に発生する)場合、アニメーション効果1及びアニメーション・イベント2に基づいて、アニメーション効果3が生成され、アニメーション効果3のロジックに基づいて、アニメーション・パラメータの修正量が決定される。アニメーション効果3のロジックは、アニメーション効果1のロジック及びアニメーション・イベント2の効果によって決定される。
【0231】
アニメーション効果3は、アニメーション・パラメータを修正し、そのため、ビューのプロパティがアニメーション効果の継続時間中に連続するか、さらに、アニメーション・パラメータは、1階微分可能であるか、又はさらに、アニメーション・パラメータは、2階微分可能である、などである。アニメーション効果3の継続時間は、アニメーション効果1の継続時間とアニメーション効果2の継続時間との交点であってもよいし、アニメーション効果1とアニメーション効果2との交点の開始からアニメーション効果1の終了又はアニメーション効果2の終了までであってもよい。
【0232】
なお、アニメーション効果の終了インターフェースとアニメーション効果が開始される前に示されるインターフェースは既知であるため、補間器を使用して、アニメーション効果の継続時間中に各フレームのビューのプロパティが決定されてもよく、そのため、各フレームのビューのプロパティが時間の変化に対して連続であり、かつ1階微分可能であり、かつ2階微分可能である。
【0233】
アニメーション・パラメータは、レンダリング・スレッド又はレンダリング・プロセスによって決定されてもよい。代替的には、UIスレッドによってアニメーション・パラメータが決定されてもよく、各フレームのアニメーション・パラメータの値がレンダリング・スレッド又はレンダリング・プロセスに転送される。UIスレッドとレンダリング・スレッドとの間の通信を行うために使用されるデータ、アニメーション・パラメータの変化を保持するために使用されるデータ、又はアニメーション・パラメータの変化を計算するための終了インターフェースを保持すために使用されるデータは、ステージング・レンダー・ツリーと呼ばれることがある。
【0234】
以下、
図11に示す内容を参照して、マルチアニメーション・シナリオにおけるアニメーション・パラメータの決定するプロセスを、一例を使用して説明する。
【0235】
図11A~
図11Dは、この出願の一実施形態による、アニメーション・パラメータ変化の一例を概略図である。
【0236】
図11Aに示す内容については、
図7Aに示す内容を参照のこと。詳細は、ここでは再度説明されない。
【0237】
図11Bに示すように、T2において、アプリケーションは、アニメーション効果2に対応するアニメーション・トリガ・イベントを受信し、アニメーション効果2がビューの高さの修正を伴うと決定し、アニメーション効果3を生成して、アニメーション効果1とアニメーション効果1との遷移点を滑らかにする。
【0238】
アニメーション効果3の継続時間は、アニメーション効果1の継続時間とアニメーション効果2の継続時間との交差、すなわちT2~T3である。アニメーション効果3の開始インターフェースと終了インターフェースは既知である。したがって、アニメーション効果3は、アニメーション効果1とアニメーション効果2とを接続するアニメーション効果として使用され、ビューのプロパティを修正することにより、ビューのプロパティをT2とT3との間で連続的に、又は1階微分可能に、若しくは2階微分可能にすることができる。T2~T3のアニメーション効果は、遷移プロセスと呼ばれることがある。
【0239】
図11Cに示すように、T2において、アプリケーションは、アニメーション効果2に対応するアニメーション・トリガ・イベントを受信し、アニメーション効果2が高さの修正を伴うと決定し、アニメーション効果3を生成して、アニメーション1とアニメーション2との遷移点を滑らかにする。
【0240】
アニメーション効果3の継続時間は、T2~T4である。アニメーション効果3の開始インターフェースは、T2におけるアニメーション効果1に対応するインターフェースであり、アニメーション効果3の終了インターフェースは、アニメーション効果2の終了インターフェースである。したがって、アニメーション効果3は、アニメーション効果1とアニメーション効果2とを接続するアニメーション効果として使用され、ビューのプロパティを修正することにより、ビューのプロパティをT2とT4との間で連続的に、又は1階微分可能に、若しくは2階微分可能にすることができる。
【0241】
図11Dに示すように、T2において、アプリケーションは、アニメーション効果2に対応するアニメーション・トリガ・イベントを受信し、アニメーション効果2が高さの修正を伴うと決定し、アニメーション効果3を生成して、アニメーション1とアニメーション2との遷移点を滑らかにする。
【0242】
アニメーション効果3の継続時間は、T3~T4である。アニメーション効果3の開始インターフェースは、アニメーション効果1の終了インターフェースであり、アニメーション効果3の終了インターフェースは、アニメーション効果2の終了インターフェースである。したがって、アニメーション効果3は、アニメーション効果1とアニメーション効果2とを接続するアニメーション効果として使用され、ビューのプロパティを修正することにより、ビューのプロパティをT3とT4との間で連続的に、又は1階微分可能に、若しくは2階微分可能にすることができる。
【0243】
以下、
図11Bに示すアニメーション・パラメータ変化を参照して、アプリケーション・インターフェース変化を説明する。アプリケーション・インターフェース変化は、
図12A及び
図12Bに示される。
【0244】
図12A及び
図12Bは、この出願の一実施形態による、マルチアニメーション・シナリオにおけるインターフェース変化の一例の概略図である。
【0245】
図6A~
図6D及び
図12A~
図12Bは、この出願の一実施形態による、アニメーション効果表示方法を電子デバイスが実行した後、インターフェース変更例の概略図のグループである。
【0246】
図6A及び
図6Dは、対応して上述されており、ここでは再度説明されない。
【0247】
図12Aに示すように、ユーザがデスクトップ上のコントロール2A01に属さない部分をタップする対話、又は例えば「戻る(back)」対話ジェスチャを使用して、別の対話方式で対話を受信した後、コントロール2A01の拡大速度及び移動速度が遅くなるが、これは、
図7Bの「拡大速度を遅くする」に対応する。
【0248】
アニメーション・パラメータは、実際には離散的に変化する。したがって、任意選択で、この出願のいくつかの実施形態では、
図7Bの「変化が止まる」は発生しない。
【0249】
T3の後とT4の前の間に、コントロール2A01の拡大速度が遅くなり、次いで、コントロール2A01の縮小が開始される。
図12Bには、コントロール2A01の縮小処理が示されており、
図12Bには、「縮小速度を速くする」と記載されており、コントロール2A01の速度は、速度が変化しなくなるまで、連続的に増加する。
【0250】
コントロール2A01の変化は、コントロール2A01の子コントロールの変化と同じであってもよい。
【0251】
図12Aの「縮小速度で拡大」及び
図12(b)の「上がって、次いで、変化しないままの速度で縮小」の表示プロセスは遷移プロセスである。
【0252】
図6A~
図6D、
図12A及び
図12Bに示されるインターフェース変化は連続的であり、1階微分可能であると理解されよう。これにより、より滑らかなインターフェースが実装され、ユーザ体験が向上する。
【0253】
ステップS803を実装するための多くの方法がある。以下、ステップS8031、ステップS8032、及びステップS8033を一例として使用し、ステップS803を実装する一実施形態を説明する。
【0254】
S8031:アプリケーションのUIスレッドは、アニメーション効果の終了インターフェース上で、測定、レイアウト、並びに描画及び記録を行い、第1のレンダー・ツリーを生成する。
【0255】
アプリケーションのUIスレッドは、アニメーション効果の終了インターフェース上で測定、レイアウト、並びに描画及び記録をアクティブに行い、第1のレンダー・ツリーを生成する。第1のレンダー・ツリーに対応するインターフェースは、終了インターフェースである。
【0256】
S8032:レンダリング・プロセス、アプリケーションのUIスレッド、又はアプリケーションのレンダリング・スレッドは、アニメーション効果の終了インターフェース及びアニメーション効果の継続時間に基づいて、アニメーション効果の継続時間中に各フレームのインターフェースに対応するアニメーション・パラメータを決定する。
【0257】
レンダリング・プロセス、アプリケーションのUIスレッド、又はアプリケーションのレンダリング・スレッドは、アニメーション効果の終了インターフェース、アニメーション効果の継続時間、及びアニメーション効果の開始時間に基づいて、アニメーション効果の継続時間中に各フレームのインターフェースに対応するレンダー・ツリーのアニメーション・パラメータを決定する。アニメーション・パラメータは、レンダー・ツリーのレンダリング・プロパティに位置してもよく、アニメーション・パラメータは、インターフェース上のビューの表示方式を修正するために使用される。
【0258】
任意選択で、この出願のいくつかの実施形態では、アニメーション・パラメータは、描画命令リストを修正することによってのみ実装可能なアニメーション効果を置き換えてもよい。この場合、描画命令リストは、アニメーション効果の継続時間中に変更される必要はなく、UIスレッドは、レンダー・ツリーを更新するために、測定、レイアウト、並びに描画及び記録を行う必要がない。
【0259】
追加されたアニメーション・パラメータは、幅(BOUD_WIDTH)、高さ(BOUNDS_HEIGHT)、場所(BOUNDS_POSITION)、ピボット(PIVOT)、角の丸み(Roundcorner)、2D変換(TRANSLATE)、3D 変換(ROTATION_3D)、Z座標(POSITION_Z)、背景色(BACKGROUND_COLOR)、前景色(FOREGROUND_COLOR)、ボーダー色(BORDER_COLOR)、ボーダー幅(BORDER_WIDTH)、透明度(ALPHA)、内容矩形(FRAME_WIDTH及びFRAME_HEIGHT)、内容適応モード(Gravity)、背景フィルタ(BACKGROUND_FILTER)、内容フィルタ(CONTENT_FILTER)、及び背景と内容フィルタ(Filter)、シャドウ色(SHADOW_COLOR)、シャドウ・オフセット(SHADOW_OFFSET_X及びSHADOW_OFFSET_Y)、シャドウ透明度(SHADOW_ALPHA)、シャドウ半径(SHADOW_RADIUS)、シャドウ・パス(SHADOW_PATH)、及びマスク(MASK)を含む。
【0260】
任意選択で、この出願のいくつかの実施形態では、ステップS8032は、UIスレッドによって行われてもよい。
【0261】
アニメーション・パラメータは、レンダー・ツリーのレンダリング・プロパティに位置し、インターフェース上のビューの表示方式に直接的に影響する。したがって、アニメーション・パラメータは、連続的、又は1階微分可能若しくは2階微分可能であってもよく、そのため、ビューのプロパティは、アニメーション・プロセスにおいて連続的、又は1階微分可能若しくは二階微分可能である。アニメーション・パラメータを決定することについては、
図9及び
図10に対応する前述のテキスト説明を参照のこと。詳細は、ここでは再度説明されない。
【0262】
アニメーション・パラメータを修正することでインターフェースを変化させることができ、アプリケーションのUIスレッドは、測定、レイアウト、並びに描画及び記録を行う必要がない。したがって、アニメーション・プロセスでは、アプリケーションのUIスレッドは、例えば、アニメーション・イベントを処理すること、ビューのプロパティを更新すること、測定、レイアウト、並びに描画及び記録を行うことのアニメーション関連動作を処理しなくてもよい。UIスレッドとレンダリング・スレッド及びレンダリング・プロセスとの作業の分担については、以下(a)のアニメーション・パラメータのデータを決定する手順の内容を参照のこと。詳細は、ここでは再度説明されない。
【0263】
アニメーション・プロセスでは、アプリケーションのUIスレッド及びレンダリング・スレッドは、アニメーション実装プロセスでは互いに独立している。したがって、アプリケーションのUIスレッドが、垂直同期信号(Vsync-APP)を受信した後、レンダリング・スレッドにアニメーション・パラメータを更新するように通知するか、レンダリング・プロセスが、垂直同期信号(Vsync-Render)を独立に要求し、垂直同期信号(Vsync-Render)の周波数が、垂直同期信号(Vsync-APP)の周波数と異なってもよいか、又はレンダリング・スレッド又はレンダリング・プロセスがアニメーション・パラメータの更新を開始する機会については、下記(b)のレンダリング・スレッド又はレンダリング・プロセスがアニメーション・パラメータを更新する機会の内容を参照のこと。詳細は、ここでは再度説明されない。異なるスレッド又はプロセスによって受信される垂直同期信号を区別するために、垂直同期信号(Vsync-APP)信号は、UIスレッドによって受信された垂直同期信号を表すために使用され、垂直同期信号(Vsync-Render)信号は、レンダリング・スレッド又はレンダリング・プロセスによって受信された垂直同期信号を表すために使用される。
【0264】
以下、(a)レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会、(b)描画命令リストの修正を別個に説明する。
【0265】
(a)レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会
【0266】
図13A、
図13B、及び
図13Cは、この出願の一実施形態による、レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会の一例の概略図である。
【0267】
レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会は、
図13A、
図13B、及び
図13Cに示してもよい。
【0268】
図13Aに示すように、最初に、UIスレッドは、垂直同期信号(Vsync-APP)を受信した後、アニメーション・イベントを処理することを行う(ステップS1301)。次いで、UIスレッドは、アニメーション効果の最終インターフェース、及びアニメーション効果の継続時間を決定することを行う(ステップS1302)。次いで、UIスレッドは、アニメーション効果の最終インターフェース、及びアニメーション効果の継続時間を送信することを行う(ステップS1303)。最後に、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、レンダー・ツリーを更新することを行う(ステップS1304)。
【0269】
図13Bに示すように、最初に、UIスレッドは、垂直同期信号(Vsync-APP)を受信することを行い(ステップS1305)、次いで、UIスレッドは、垂直同期信号又はトリガ機会を示す別のパラメータを転送することを行い(ステップS1306)、最後に、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、レンダー・ツリーを更新することを行う(S1304)。
【0270】
図13Cに示すように、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、垂直同期信号(Vsync-Render)を受信することを行い(ステップS1307)、次いで、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、レンダー・ツリーを更新することを行う(S1304)。
【0271】
アニメーション効果の最初のフレームのインターフェースを生成するプロセスでは、レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会を
図13Aに示してもよい。アニメーション効果の最初ではないフレームのインターフェースを生成するプロセスでは、レンダリング・スレッド又はレンダリング・プロセスがレンダー・ツリーを更新する機会を
図13A、
図13B、又は
図13Cに示してもよい。
【0272】
プリケーションのUIスレッドがレンダリング・プロセスにデータを転送する場合、プロセス間通信(InterProcess Communication、IPC)によりデータ交換を完了する必要があることに留意されたい。アプリケーションは、Binder、AIDL、共有メモリ、ソケットなどを介してIPC通信を実装してもよい。これは、本明細書において限定されるものではない。
【0273】
図14は、この出願の一実施形態による、レンダリング・スレッドがアニメーション・パラメータを更新する機会の別の例の概略図である。
【0274】
図14に示すように、アニメーション・プロセスでは、レンダリング・スレッドは、垂直同期信号(Vsync-APP)を独立に要求してもよい。垂直同期信号(Vsync-APP)を受信するT-Delayでは、UIスレッドは、ブロッキング又は別の理由により、レンダー・ツリーの更新に関する情報をレンダリング・スレッドに転送しない。T-Delayの後、レンダリング・スレッドはレンダー・ツリーの更新を開始し、インターフェースを生成する。垂直同期信号(Vsync-APP)を受信するT-Delayでは、UIスレッドは、入力イベント又は他のロジック(アニメーション・イベントを処理することを含まなくてもよい)を処理し、レンダー・ツリーの更新に関する情報をレンダリング・スレッドに転送してもよい。レンダー・ツリーの更新に関する情報を受信した後、レンダリング・スレッドは、レンダー・ツリーを更新し、インターフェースを生成する。
【0275】
1つの遅延T-Delayが、アニメーションを実装するのを助け、非アニメーション・ロジックによって変化するインターフェースを迅速に生成するために、レンダリング・スレッドに対して設定されることが理解されよう。
【0276】
T-Delayの値は、垂直同期信号の周期よりも小さくてもよいし、垂直同期信号の周期以上であってもよい。
【0277】
任意選択で、この出願のいくつかの実施形態では、レンダリング・スレッドは、アニメーション・パラメータを更新し、インターフェースを生成する際に、UIスレッドの後で1つ以上の垂直同期信号(Vsync-APP)を遅延させてもよい。この場合、レンダリング・スレッドが、アニメーション・パラメータを更新する際に、UIスレッドの後で1つ以上の垂直同期信号(Vsync-APP)を遅延させるときに、アニメーションの開始が遅れることがあることが理解されよう。しかしながら、これは、単一フレーム・インターフェースを生成するための最大処理継続時間を増加させ、ジャンクの確率を減少させるのに役立つ。
【0278】
レンダリング・プロセスがアニメーション・パラメータを更新する機会は、レンダリング・スレッドがアニメーション・パラメータを更新する機会とは異なる。レンダリング・プロセスは、垂直同期(Vsync-Render)信号を独立に要求する。垂直同期信号(Vsync-Render)と垂直同期信号(Vsync-APP)の周波数と時間は同じであっても異なっていてもよい。
【0279】
(b)描画指示リストの修正
【0280】
任意選択で、この出願のいくつかの実施形態では、アニメーション効果が開始される前に示されたインターフェースの描画命令リストと、アニメーション効果の終了インターフェースの描画命令リストとが異なる場合、アニメーション効果の最初のフレームのインターフェースの開始からアニメーション効果の終了インターフェースまでの間、アニメーション効果の終了インターフェースに対応するレンダー・ツリーを基準として使用して、レンダー・ツリーのアニメーション・パラメータを修正することによりインターフェースが生成される。これは、描画命令リストが以下の(i)のように修正されないアニメーション効果プロセスである。
【0281】
任意選択で、この出願のいくつかの実施形態では、アニメーション効果が開始される前に示されたインターフェースの描画命令リストと、アニメーション効果の終了インターフェースの描画命令リストとが異なる場合、アニメーション効果の最初のフレームのインターフェースの開始からアニメーション効果の終了インターフェースまでの間、アニメーション効果の前に示されるインターフェースに対応するレンダー・ツリーを基準として使用して、レンダー・ツリーのアニメーション・パラメータを修正することによりインターフェースが生成される。これは、描画命令リストが以下の(i)のように修正されないアニメーション効果プロセスである。
【0282】
任意選択で、この出願のいくつかの実施形態では、アニメーション効果が開始される前に示されるインターフェースの描画命令リストが、アニメーション効果の終了インターフェースの描画命令リストと異なる場合、レンダリング・スレッド又はレンダリング・プロセスは、描画命令リストにおける描画動作及びレンダー・ツリーにおけるアニメーション効果パラメータを修正して、インターフェースを生成してもよい。これは、描画命令リストが以下の(i)のように修正されるアニメーション効果プロセスである。
【0283】
この出願のいくつかの実施形態では、アプリケーション・インターフェースがテキスト・ビュー(textview)又は画像ビュー(imageview)を含むときに、アニメーション効果が開始される前に示されるインターフェースの描画命令リストが、アニメーション効果の終了インターフェースの描画命令リストと異なることがある。
【0284】
(i)描画命令リストが修正されないアニメーション効果プロセス
【0285】
アニメーション効果の終了インターフェースの描画内容が、アニメーション効果が開始される前に表示されるインターフェースの描画内容とは異なる。その結果、描画命令リストが異なる。この出願の一実施形態で提供されるアニメーション効果表示方法では、
図15A及び
図15Bに示すように、最終インターフェースのレンダー・ツリーの描画命令リストが基準として使用され、アニメーション・パラメータがレンダー・ツリーを更新するように修正されて、インターフェースを生成する。
【0286】
図15A及び
図15Bは、この出願の一実施形態による、アニメーション効果プロセスの一例の概略図である。
【0287】
図15Aに示すように、アニメーション効果が開始される前に、インターフェースは、コントロール1501を含み、コントロール1501は、「input an account」というテキストを保持する。この場合、コントロールは、テキスト・ビュー1と矩形ビューとを含んでもよく、テキスト・ビュー1は、「input an account」というテキストを保持し、テキスト・ビュー1のサイズは、コントロール1501のサイズと同じである。
【0288】
描画命令リストにおけるテキスト・ビュー1に対応する描画動作は、drawText(input an account)である。
【0289】
コントロール1501にアニメーション効果が設定された後、アニメーション効果の終了インターフェース上では、コントロール1501の幅が短くなり、「input an account」というテキストが2行になり、1行目が「input」、2行目が「an account」になる。言い換えれば、コントロール1501は、テキスト・ビュー1を含み、テキスト・ビュー1は、「input」と「account」を保持する。
【0290】
描画命令リストにおけるテキスト・ビュー1に対応する描画動作は、drawText(enter)及びdrawText(account)である。
【0291】
描画命令リストについては、UIスレッドは、リアルタイムの測定、レイアウト、並びに描画及び記録をインターフェース上で行う必要がある。したがって、アニメーション効果プロセスにおいて描画命令リストの更新を避けるために、アニメーション効果の最初のフレームのインターフェースの開始からアニメーション効果の終了インターフェースまで、
図15Bに具体的に示すように、終了インターフェースに対応するレンダー・ツリーをアニメーション効果パラメータとして使用して、インターフェースのレンダー・ツリーが更新されて生成される。
【0292】
図15Bに示すように、アニメーション効果の継続時間において、コントロール1501の幅が、「input an account」というテキストを1行に収めるようにロバストであっても、「input an account」は、依然として「input」と「an account」の2行で提示される。この場合、アニメーション効果の継続時間において、コントロール1501に対応するレンダリング・ノードは、レンダリング・ノード2であり、レンダリング・ノード2の描画指示リストに含まれる描画動作は、「drawText(enter) and drawText(an acount)」である。
【0293】
具体的には、アニメーション効果プロセスにおいて、描画命令リストは変化せず、レンダリング・スレッド又はレンダリング・プロセスがアニメーション効果パラメータを修正して、
図15Bに示すインターフェースを生成し、コントロール1501の幅が徐々に小さくなり、テキストが常に2行で表示される。
【0294】
(ii)描画命令リストが修正されるアニメーション効果プロセス
【0295】
アニメーション効果の終了インターフェースの描画内容が、アニメーション効果が開始される前に表示されるインターフェースの描画内容とは異なる。その結果、描画命令リストが異なる。この出願の一実施形態で提供されるアニメーション効果表示方法によれば、
図16A及び
図16Bに示すように、インターフェースを生成するプロセスにおいて、描画命令リストにおける描画動作が連続的に修正され、アニメーション効果パラメータが修正されて、インターフェースを生成する。
【0296】
【0297】
図16Aに示すように、アニメーション効果が開始される前に示されるインターフェースは、コントロール1601を含み、コントロール1601は、ピクチャ1を保持する。コントロール1601は、1つの画像ビューであってもよい。
【0298】
コントロール1601にピクチャ1を表示することに対応する描画動作は、描画命令リストのdrawBitmap(picture 1, src, dst 1)である。picture 1は、ソース画像であり、scrは、ソース画像に表示される領域を示し、dst 1は、ピクチャ1のscrがコントロール1601に描画される領域を示す。
【0299】
コントロール1601にアニメーション効果が設定された後、アニメーション効果の終了インターフェース上では、コントロール1601の幅が小さくなり、それに比例して画像ビュー1の幅が小さくなる。描画命令リストにおける画像ビュー1に対応する描画動作は、drawBitmap(picture 1, src, dst N)である。
【0300】
例えば、dst 1=Rect(10, 20, 150, 200)である。(10, 20)は、矩形の左上の座標を示し、(150, 100)は、矩形の右下の座標を示し、dst N=Rect(10, 20, 150, 100)である。
【0301】
アニメーション効果プロセスでは、レンダリング・スレッド又はレンダリング・プロセスが、コントロール1601に対応する描画動作を更新して、
図16Bに示すインターフェースを実装する。
【0302】
図16Bに示すように、アニメーション効果プロセスでは、レンダリング・スレッド又はレンダリング・プロセスが、フレーム毎に、レンダー・ツリー中に描画動作及びアニメーション効果パラメータを修正し、そのため、画像ビュー1の幅がアニメーション効果プロセスにおいて連続的に小さくする。レンダリング・スレッド又はレンダリング・プロセスは、例えば、drawBitmap(picture 1, src, dst 2),...,drawBitmap(picture 1, src, dst N)の描画動作を修正する。
【0303】
レンダリング処理ポリシーは、レンダリング・スレッド又はレンダリング・プロセスが描画動作を修正する方式に影響を与える。ピクチャ処理ポリシーは、以下を含んでもよい。CENTER(ピクチャは中央に表示され、ピクチャ・サイズがピクチャを保持するビューのサイズを超える場合、そのピクチャがクロッピングされる)CENTER_INSIDE(ピクチャが完全になり、そのピクチャを保持するビューの中央に表示されるように、ピクチャ・サイズは比率に基づいて調整される)FIT_CENTER(ピクチャが、ピクチャを保持し、かつ中央に表示されるビューのサイズより大きくないように、ピクチャ・サイズは比率に基づいて調整される)FIT_END(ピクチャが、ピクチャを保持し、かつ下部に表示されるビューのサイズより大きくないように、ピクチャ・サイズは比率に基づいて調整される)FIT_START(ピクチャが、ピクチャを保持し、かつ上部に表示されるビューのサイズより大きくないように、ピクチャ・サイズは比率に基づいて調整される)FIT_XY(ピクチャが、ピクチャを保持するビューのサイズより大きくないように、ピクチャ・サイズは比率に基づいて調整されない)などがあるが、本明細書では限定されない。
【0304】
CENTER、CENTER_INSIDE、FIT_CENTER、FIT_END、FIT_START、及びFIT_XYは、描画動作drawBitmapにおけるパラメータdstとsrcを修正することによって修正されてもよい。
【0305】
図16C及び
図16Dに示すように、描画命令リストにおける描画動作が修正されて、コントロール上で保持されているピクチャをスケーリング又はクロッピングして、コントロールのサイズ変更に適応する。
【0306】
図16Cに示すように、コントロール1602は画像1を保持する。コントロールのサイズが小さくなるときに、コントロールのサイズの変化率、例えば、前述のCENTER_INSIDEに基づいて、ピクチャがスケーリングされてもよい。
【0307】
代替的に、
図16Dに示すように、コントロールのサイズが小さくなるときに、コントロールのサイズの変化率に基づいて、ピクチャがクロッピングされてもよい。代替的に、
図16Eに示すように、コントロールのサイズが大きくなるときに、最初に、アニメーション効果の終了インターフェースのサイズまで画像1が拡大され、次いで、コントロールのサイズに基づいて、クロッピングされて、
図16えに示すアニメーション効果を実装してもよい。
【0308】
結論として、レンダリング・スレッド又はレンダリング・プロセスは、コントロールのサイズの変化に基づいて、描画命令リストにおける描画動作を修正することによって、コントロールに保持されている画像又は他のコンテンツをクロッピングして、連続的なインターフェース変化を実装してもよい。
【0309】
S8033:アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、アニメーション・パラメータに基づいて、レンダー・ツリーを更新し、更新されたレンダー・ツリーに基づいて、ビットマップを生成する。
【0310】
レンダリング・スレッド又はレンダリング・プロセスは、更新されたアニメーション・パラメータを有するレンダー・ツリーを取得した後、レンダー・ツリーをトラバースし、キャンバス上の描画命令リストにおける描画動作をトラバースし、実行してもよい。各描画動作では、レンダリング・スレッド又はレンダリング・プロセスは、レンダリング・ノードのレンダリング・プロパティを参照して、描画動作のパラメータ又は描画動作に対応するグラフィックス処理ライブラリ・コールを調整して、ビットマップを生成してもよい。
【0311】
この出願のいくつかの実施形態では、レンダリング・プロセス又はレンダリング・スレッドは、GPUを呼び出して、ビットマップを描画し、生成してもよい。代替的には、この出願のいくつかの実施形態では、レンダリング・プロセス又はレンダリング・スレッドは、CPUを呼び出して、ビットマップを描画し、生成してもよい。
【0312】
ビットマップは、レンダリング・プロセス又はサーフェス・シンセサイザ(SurfaceFlinger)によって取得され、層合成後にインターフェースが生成される。
【0313】
S804:任意選択で、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、ビューのプロパティをアプリケーションのUIスレッドに同期させる。
【0314】
インターフェースが生成された後、UIスレッドは、アニメーション・プロセスにおいて、インターフェース上のコントロールの実際の場所及びサイズを感知しない。したがって、任意選択で、この出願のいくつかの実施形態では、レンダリング・スレッド又はレンダリング・プロセスは、コントロールの場所及びサイズをアプリケーションのUIスレッドに送信してもよい。コントロールの場所及びサイズは、本明細書では限定されない、レンダー・ツリーのようなデータ構造を使用して転送されてもよい。
【0315】
図17は、この出願の一実施形態による、UIスレッド・データを使用して、ビューのプロパティを決定する一例の概略図である。
【0316】
図17に示すように、UIスレッド・データを使用してビューのプロパティを決定することは、以下のステップを含む。
【0317】
S1701:レンダー・ツリーを更新するために使用される情報を決定し転送する。
【0318】
アプリケーションのUIスレッドは、レンダー・ツリーを更新するために使用される情報を決定した後、レンダー・ツリーを更新するために使用される情報、例えば、アニメーション効果の継続時間中に各フレームのインターフェースのレンダー・ツリーのアニメーション・パラメータを、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドに転送してもよい。
【0319】
アニメーション効果の最初のフレームに対して、アプリケーションのUIスレッドは、アニメーション効果の継続時間、アニメーション・オブジェクト、及びアニメーション効果の終了インターフェースなどのアニメーション・パラメータを更新するために使用される情報を、レンダリング・スレッド又はレンダリング・プロセスに転送する。
【0320】
アニメーションの最初のフレーム以外のアニメーション効果を表示するプロセスでは、アプリケーションのUIスレッドは、アニメーション・パラメータを更新するために使用される情報を、レンダリング・スレッド又はレンダリング・プロセスに転送しなくてもよい。
【0321】
アニメーションの最初のフレーム以外のアニメーション効果を表示するプロセスでは、アプリケーションのUIスレッドは、他のUIスレッドの入力イベント又はロジック(アニメーション・イベントを除く)によって変化したレンダー・ツリーを、レンダリング・スレッド又はレンダリング・プロセスに転送してもよい。
【0322】
S1702:ビューのプロパティを決定し、転送する。
【0323】
アニメーション効果を表示するプロセスでは、レンダリング・スレッド又はレンダリング・プロセスは、レンダー・ツリーに基づいて、サイズ及び場所などのビューのプロパティを決定し、アプリケーションのUIスレッドにビューのサイズ及びプロパティを転送し、そのため、アプリケーションのUIスレッドがビューのサイズ及び場所を決定できる。
【0324】
任意選択で、この出願のいくつかの実施形態では、レンダリング・スレッド又はレンダリング・プロセスは、アプリケーションのUIスレッドの要求に応答して、ビューの場所及びサイズ、並びに別のプロパティをアプリケーションのUIスレッドに転送してもよい。
【0325】
アニメーション効果を表示するプロセスでは、アプリケーションのUIスレッドは、測定、レイアウト、及び描画を行ってビューのプロパティを決定する必要はないと理解されよう。これにより、アプリケーションのUIスレッドの負荷が軽減される。
【0326】
【0327】
図18Aは、この出願の一実施形態による、
図3に示される方法を行うプロセスにおけるレンダー・ツリー変化の一例の概略図である。
【0328】
図18Aに示すように、アニメーション効果1が開始される前、アプリケーションのレンダリング・スレッドには、レンダー・ツリー 1が記憶されており、アプリケーション・インターフェースにおけるコントロール1A01は20pxの正方形である。
【0329】
アニメーション効果1が開始された後、アプリケーションのUIスレッドは垂直同期信号1を受信し、アニメーション効果1の最初のフレームのインターフェース上のコントロール1A01のサイズが25px*25pxであると決定し、アニメーション効果1の最初のフレームのインターフェースに対応するレンダー・ツリー2を生成し、アプリケーションのレンダリング・スレッドにレンダー・ツリー2を同期させる。レンダリング・スレッドは、レンダー・ツリー 2に基づいて、ビットマップを生成し、ビットマップにおけるコントロール1A01のサイズは、25px*25pxである。
【0330】
次いで、UIスレッドは、垂直同期信号2を受信した後、アニメーション効果1の最初のフレームのインターフェース上のコントロール1A01のサイズが30px*30pxであると決定し、アニメーション効果1の第2のフレームのインターフェースに対応するレンダー・ツリー3を生成し、アプリケーションのレンダリング・スレッドにレンダー・ツリー3を同期させる。レンダリング・スレッドは、レンダー・ツリー 2に基づいて、ビットマップを生成し、ビットマップにおけるコントロール1A01のサイズは、30px*30pxである。
【0331】
図18B及び
図18Cは、この出願の一実施形態による、
図4A及び
図4Bに示される方法を行うプロセスにおけるレンダー・ツリー変化の一例の概略図である。
【0332】
図18Bに示すように、アニメーション効果の前、アプリケーションのレンダリング・スレッドには、レンダー・ツリー 1が記憶されており、アプリケーション・インターフェースにおけるコントロール1A01は20pxの正方形である。
【0333】
アニメーション効果1が開始された後、アプリケーションのUIスレッドは垂直同期信号1を受信し、アニメーション効果1のロジックが、コントロール1A01がフレーム毎に5pxずつ拡大され、最終的に100px*pxに変化するものであると決定し、アニメーション効果1の終了インターフェースに基づいて、レンダー・ツリー2が生成される。次いで、アニメーション効果1のロジックとレンダー・ツリー2が、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドに転送される。アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、アニメーション効果1のロジックに基づいて、レンダー・ツリー 2を更新し、更新されたレンダー・ツリー 2に基づいて、ビットマップを生成する。ビットマップにおけるコントロール1A01のサイズは、25px*25pxである。
【0334】
次いで、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、垂直同期信号2を受信した後、アニメーション効果1のロジックに基づいて、レンダー・ツリー2を更新し、更新されたレンダー・ツリー 2に基づいて、ビットマップを生成する。ビットマップにおけるコントロール1A01のサイズは、30px*30pxである。
【0335】
図18Cに示すように、
図18Bとは異なり、アプリケーションのレンダリング・プロセス又はレンダリング・スレッドは、アニメーション効果1のロジックに基づいて、レンダー・ツリー 1を更新する。レンダー・ツリー1に対応するインターフェース上のコントロール1A01のサイズは、20px*20pxである。
【0336】
(3)この出願の一実施形態で提供される電子デバイス
【0337】
まず、この出願のこの実施形態で提供される電子デバイスのハードウェア・アーキテクチャが説明される。
【0338】
図19は、この出願の一実施形態による、電子デバイスのハードウェア・アーキテクチャの一例の概略図である。
【0339】
電子デバイスは、携帯電話、タブレット・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、ノートブック・コンピュータ、ウルトラモバイル・パーソナルコンピュータ(ultra-mobile personal computer、UMPC)、ネットブック、セルラー電話、パーソナル・デジタル・アシスタント(personal digital assistant、PDA)、拡張現実(augmented reality、AR)デバイス、仮想現実(virtual reality、VR)デバイス、人工知能(artificial intelligence、AI)デバイス、ウェアラブル・デバイス、車載デバイス、スマート家庭用デバイス、及び/又はスマートシティ・デバイスであってもよい。この出願のこの実施形態では、電子デバイスの具体的なタイプは限定されない。
【0340】
電子デバイスは、プロセッサ110、外部メモリ・インターフェース120、内部メモリ121、ユニバーサル・シリアル・バス(universal serial bus、USB)ポート130、充電管理モジュール140、電力管理モジュール141、バッテリ142、アンテナ1、アンテナ2、移動通信モジュール150、無線通信モジュール160、オーディオ・モジュール170、スピーカ170A、受信機170B、マイクロホン170C、ヘッドセット・ジャック170D、センサ・モジュール180、ボタン190、モータ191、インジケータ192、カメラ193、ディスプレイ194、加入者アイデンティティ・モジュール(subscriber identification module、SIM)カード・インターフェース195などを含んでもよい。センサ・モジュール180は、圧力センサ180A、ジャイロ・センサ180B、気圧センサ180C、磁気センサ180D、加速度センサ180E、距離センサ180F、光学近接センサ180G、指紋センサ180H、温度センサ180J、タッチ・センサ180K、周辺光センサ180L、骨伝導センサ180Mなどを含んでもよい。
【0341】
本発明のこの実施形態に例示される構造は、電子デバイスに対する特定の限定を構成しないと理解されよう。いくつかの他の実施形態では、電子デバイスは、図に示されているコンポーネントよりも多く、又は少ないコンポーネントを含んでもよいし、いくつかのコンポーネントが組み合わされてもよいし、いくつかのコンポーネントが分裂されてもよいし、異なるコンポーネント配置が使用されてもよい。図に示すコンポーネントは、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせにおいて実装されてもよい。
【0342】
プロセッサ110は、1つ以上の処理ユニットを含んでもよい。例えば、プロセッサ110は、アプリケーション・プロセッサ(application processor、AP)、モデム・プロセッサ、グラフィック処理ユニット(graphics processing unit、GPU)、画像信号プロセッサ(image signal processor、ISP)、コントローラ、ビデオ・コーデック、デジタル信号プロセッサ(digital signal processor、DSP)、ベースバンド・プロセッサ、及び/又はニューラル・ネットワーク処理ユニット(neural-network processing unit、NPU)を含んでもよい。異なる処理ユニットは、独立したコンポーネントであってもよいし、1つ以上のプロセッサに一体化されてもよい。
【0343】
コントローラは、命令動作コード及び時間シーケンス信号に基づいて動作制御信号を生成して、命令フェッチ及び命令実行の制御を完了してもよい。
【0344】
メモリは、プロセッサ110内に配設されてもよく、命令及びデータを記憶するように構成されている。いくつかの実施形態では、プロセッサ110内のメモリはキャッシュ・メモリである。メモリは、プロセッサ110によって最近使用されたか、又は周期的に使用された命令又はデータを記憶してもよい。プロセッサ110が命令又はデータを再度使用する必要がある場合、プロセッサは、メモリから命令又はデータを直接呼び出してもよい。これは、繰り返されるアクセスを避け、プロセッサ110の待ち時間を短縮し、システムの効率を改善する。
【0345】
いくつかの実施形態では、プロセッサ110は、1つ以上のインターフェースを含んでもよい。このインターフェースは、集積回路(inter-integrated circuit、I2C)インターフェース、集積回路サウンド(inter-integrated circuit sound、I2S)インターフェース、パルス・コード変調(pulse code modulation、PCM)インターフェース、ユニバーサル非同期受信機/送信機(universal asynchronous receiver/transmitter、UART)インターフェース、モバイル産業用プロセッサ・インターフェース(mobile industry processor interface、MIPI)、汎用入力/出力(general-purpose input/output、GPIO)インターフェース、加入者アイデンティティ・モジュール(subscriber identity module、SIM)、ユニバーサル・シリアル・バス(universal serial bus、USB)インターフェースなどを含んでもよい。
【0346】
I2Cインターフェースは、シリアル・データ・ライン(serial data line、SDA)及びシリアル・クロック・ライン(serail clock line、SCL)を含む双方向同期シリアル・バスである。いくつかの実施形態では、プロセッサ110は、複数のI2Cバスのグループを含んでもよい。プロセッサ110は、異なるI2Cバス・インターフェースを介して、タッチ・センサ180K、充電器、懐中電灯、カメラ193などに別々に結合されてもよい。例えば、プロセッサ110は、I2Cインターフェースを介してタッチ・センサ180Kに結合されてもよく、プロセッサ110が、I2Cバス・インターフェースを介してタッチ・センサ180Kと通信して、電子デバイスのタッチ機能を実装するようにする。
【0347】
I2Sインターフェースは、オーディオ通信のために構成されてもよい。いくつかの実施形態では、プロセッサ110は、複数のI2Sバスのグループを含んでもよい。プロセッサ110は、I2Sバスを介してオーディオ・モジュール170に結合されてもよく、プロセッサ110とオーディオ・モジュール170との間の通信を実装するようにする。いくつかの実施形態では、オーディオ・モジュール170は、I2Sインターフェースを介してオーディオ信号を無線通信モジュール160に転送してもよく、ブルートゥース・ヘッドセットを介して着呼する機能を実装する。
【0348】
PCMインターフェースは、オーディオ通信、サンプリング、量子化、及びアナログ信号の符号化のために構成されてもよい。いくつかの実施形態では、オーディオ・モジュール170及び無線通信モジュール160は、PCMバス・インターフェースを介して結合されてもよい。いくつかの実施形態では、オーディオ・モジュール170は、代替的には、PCMインターフェースを介してオーディオ信号を無線通信モジュール160に転送してもよく、ブルートゥース・ヘッドセットを介して着呼する機能を実装する。I2SインターフェースとPCMインターフェースの両方が、オーディオ通信のために構成されてもよい。
【0349】
UARTインターフェースは、非同期通信のために構成されたユニバーサル・シリアル・データ・バスである。バスは、双方向通信バスであってもよい。バスは、シリアル通信とパラレル通信との間で伝送対象データを変換する。いくつかの実施形態では、UARTインターフェースは、一般に、プロセッサ110を無線通信モジュール160に接続するように構成されている。例えば、プロセッサ110は、UARTインターフェースを介して無線通信モジュール160内のブルートゥース・モジュールと通信して、ブルートゥース機能を実装する。いくつかの実施形態では、オーディオ・モジュール170は、UARTインターフェースを介してオーディオ信号を無線通信モジュール160に転送してもよく、ブルートゥース・ヘッドセットを介して音楽を再生する機能を実装する。
【0350】
MIPIインターフェースは、プロセッサ110及びディスプレイ194、カメラ193などの周辺コンポーネントに接続するように構成されてもよい。MIPIインターフェースは、カメラ・シリアル・インターフェース(camera serial interface、CSI)、ディスプレ・イシリアル・インターフェース(display serial interface、DSI)などを含む。いくつかの実施形態では、プロセッサ110は、CSIインターフェースを介してカメラ193と通信して、電子デバイスの写真撮影機能を実装する。プロセッサ110は、DSIインターフェースを介してディスプレイ194と通信して、電子デバイスのディスプレイ機能を実装する。
【0351】
GPIOインターフェースは、ソフトウェアによって構成されてもよい。GPIOインターフェースは、制御信号又はデータ信号として構成されてもよい。いくつかの実施形態では、GPIOインターフェースは、プロセッサ110をカメラ193、ディスプレイ194、無線通信モジュール160、オーディオ・モジュール170、センサ・モジュール180などに接続するように構成されてもよい。GPIOインターフェースはまた、I2Cインターフェース、I2Sインターフェース、UARTインターフェース、MIPIインターフェースなどとして構成されてもよい。
【0352】
USBポート130は、USB規格に準拠したインターフェースであり、具体的には、Mini USBポート、Micro USBポート、USBタイプCインターフェースなどであってもよい。USBポート130は、電子デバイスを充電するために充電器に接続するように構成されてもよいし、電子デバイスと周辺デバイスとの間でデータを伝送するように構成されてもよいし、ヘッドセットを介してオーディオを再生するためのヘッドセットに接続するように構成されてもよい。インターフェースは、ARデバイスなどの別の電子デバイスに接続するようにさらに構成されてもよい。
【0353】
本発明のこの実施形態で示すモジュール間のインターフェース接続関係は、説明のための例にすぎず、電子デバイスの構造に対する限定を構成しないと理解されよう。この出願のいくつかの他の実施形態では、電子デバイスは、代替的には、前述の実施形態とは異なるインターフェース接続方式を使用するか、又は複数のインターフェース接続方式の組み合わせを使用してもよい。
【0354】
充電管理モジュール140は、充電器からの充電入力を受信するように構成されている。充電器は、無線充電器又は有線充電器であってもよい。有線充電のいくつかの実施形態では、充電管理モジュール140は、USBポート130を介して有線充電器の充電入力を受信してもよい。無線充電のいくつかの実施形態では、充電管理モジュール140は、電子デバイスの無線充電コイルを通して無線充電入力を受信してもよい。充電管理モジュール140は、バッテリ142を充電しながら、電力管理モジュール141を使用することによって、電力を電子デバイスにさらに供給してもよい。
【0355】
電力管理モジュール141は、バッテリ142、充電管理モジュール140、及びプロセッサ110に接続するように構成されている。電力管理モジュール141は、バッテリ142及び/又は充電管理モジュール140から入力を受信し、プロセッサ110、内部メモリ121、ディスプレイ194、カメラ193、無線通信モジュール160などに電力を供給する。電力管理モジュール141は、バッテリ容量、バッテリ・サイクル数、バッテリ健康状態(漏電又はインピーダンス)などのパラメータを監視するようにさらに構成されてもよい。いくつかの他の実装では、電力管理モジュール141は、代替的にプロセッサ110内に配設されてもよい。いくつかの他の実施形態では、電力管理モジュール141及び充電管理モジュール140は、代替的に、同じデバイス内に配設されてもよい。
【0356】
電子デバイスの無線通信機能は、アンテナ1、アンテナ2、移動通信モジュール150、無線通信モジュール160、モデム・プロセッサ、ベースバンド・プロセッサなどを使用して実装されてもよい。
【0357】
アンテナ1及びアンテナ2は、電磁波信号を伝送及び受信するように構成されている。電子デバイスの各アンテナは、1つ以上の通信周波数帯域をカバーするように構成されてもよい。アンテナの利用を改善するために、異なるアンテナがさらに多重化されてもよい。例えば、アンテナ1は、無線ローカル・エリア・ネットワークのダイバーシチ・アンテナとして多重化されてもよい。いくつかの他の実施形態では、アンテナは、チューニング・スイッチと組み合わせて使用されてもよい。
【0358】
移動通信モジュール150は、2G/3G/4G/5Gなどの無線通信を含み、かつ電子デバイスに適用されるソリューションを提供してもよい。移動通信モジュール150は、少なくとも1つのフィルタ、スイッチ、電力増幅器、低ノイズ増幅器(low noise amplifier、LNA)などを含んでもよい。移動通信モジュール150は、アンテナ1を介して電磁波を受信し、受信した電磁波に対してフィルタ処理、増幅などの処理を行い、その電磁波を復調のためにモデム・プロセッサに伝送してもよい。移動通信モジュール150は、モデム・プロセッサによって変調された信号をさらに増幅し、アンテナ1を介して放射のためにその信号を電磁波に変換してもよい。いくつかの実施形態では、移動通信モジュール150内の少なくともいくつかの機能モジュールは、プロセッサ110内に配設されてもよい。いくつかの実施形態では、移動通信モジュール150の少なくともいくつかの機能モジュールが、プロセッサ110の少なくともいくつかのモジュールと同じデバイス内に配設されてもよい。
【0359】
モデム・プロセッサは、変調器及び復調器を含んでもよい。変調器は、送信対象の低周波ベースバンド信号を中/高周波信号に変調するように構成されている。復調器は、受信した電磁波信号を低周波ベースバンド信号に復調するように構成されている。次いで、復調器は、復調した低周波ベースバンド信号を処理のためにベースバンド・プロセッサに伝送する。低周波ベースバンド信号は、ベースバンド・プロセッサによって処理され、次いで、アプリケーション・プロセッサに伝送される。アプリケーション・プロセッサは、オーディオ・デバイス(スピーカ170A、受信機170Bなどに限定されない)を介して、音声信号を出力するか、又はディスプレイ194を介して画像若しくはビデオを表示する。いくつかの実施形態では、モデム・プロセッサは、独立したデバイスであってもよい。いくつかの他の実施形態では、モデム・プロセッサは、プロセッサ110から独立していてもよく、移動通信モジュール150又は別の機能モジュールと同じデバイス内に配設されてもよい。
【0360】
無線通信モジュール160は、電子デバイスに適用され、かつ無線ローカル・エリア・ネットワーク(wireless local area networks、WLAN) (例えば、無線フェデリティ(wireless fidelity、Wi-Fi)ネットワーク)、ブルートゥース(Bluetooth、BT)、グローバル・ナビゲーション衛星システム(global navigation satellite system、GNSS)、周波数変調(frequency modulation、FM)、近接場通信(near field communication、NFC)技術、赤外線(infrared、IR)技術などを含む無線通信ソリューションを提供してもよい。無線通信モジュール160は、少なくとも1つの通信プロセッサ・モジュールを統合する1つ以上のコンポーネントであってもよい。無線通信モジュール160は、アンテナ2を介して電磁波を受信し、電磁波信号に対して周波数変調及びフィルタ処理を行い、処理した信号をプロセッサ110に送信する。無線通信モジュール160は、さらに、プロセッサ110から送信対象の信号を受信し、その信号に対して周波数変調及び増幅を行い、その信号をアンテナ2に介した放射のために電磁波に変換してもよい。
【0361】
いくつかの実施形態では、電子デバイスでは、アンテナ1及び移動通信モジュール150が結合され、アンテナ2及び無線通信モジュール160が結合され、電子デバイスは、無線通信技術を使用することによって、ネットワーク及び他のデバイスと通信することができる。無線通信技術は、移動通信のためのグローバル・システム(global system for mobile communications、GSM)、一般パケット無線サービス(general packet radio service、GPRS)、符号分割多重接続(code division multiple access、CDMA)、広帯域符号分割多重接続(wideband code division multiple access、WCDMA)、時分割符号分割多重接続(time-division code division multiple access、TD-SCDMA)、ロング・ターム・エボリューション(long term evolution、LTE)、BT、GNSS、WLAN、NFC、FM、IR技術などを含んでもよい。GNSSは、全地球測位システム(global positioning system、GPS)、グローバル・ナビゲーション衛星システム(global navigation satellite system、GLONASS)、北斗航法衛星システム(BeiDou navigation satellite system、BDS)、準天頂衛星システム(quasi-zenith satellite system、QZSS)、及び/又は衛星ベース増強システム(satellite based augmentation system、SBAS)を含んでもよい。
【0362】
電子デバイスは、GPU、ディスプレイ194、アプリケーション・プロセッサなどを使用してディスプレイ機能を実装する。GPUは、画像処理のためのマイクロプロセッサであり、ディスプレイ194及びアプリケーション・プロセッサに接続される。GPUは、グラフィック描画のために数学的及び幾何学的コンピューテーションを行うように構成されている。プロセッサ110は、表示情報を生成又は変更するためのプログラム命令を実行する1つ以上のGPUを含んでもよい。
【0363】
ディスプレイ194は、画像、ビデオなどを表示するように構成されている。ディスプレイ194は、ディスプレイ・パネルを含む。表示パネルは、液晶ディスプレイ(liquid crystal display、LCD)とすることができる。ディスプレイ・パネルは、有機発光ダイオード(organic light-emitting diode、OLED)、アクティブ・マトリックス有機発光ダイオード(active-matrix organic light emitting diode、AMOLED)、フレキシブル発光ダイオード(flexible light-emitting diode、FLED)、ミニLED、マイクロLED、マイクロOLED、量子ドット発光ダイオード(quantum dot light emitting diode、QLED)などから作製されてもよい。いくつかの実施形態では、電子デバイスは、1つ又はN個のディスプレイ194を含んでもよく、Nは1よりも大きい正の整数である。
【0364】
電子デバイスは、ISP、カメラ193、ビデオ・コーデック、GPU、ディスプレイ194、アプリケーション・プロセッサなどを使用して、撮影機能を実装してもよい。
【0365】
ISPは、カメラ193によってフィードバックされたデータを処理するように構成されてもよい。例えば、撮影中にシャッタが開けられ、レンズを介して光がカメラの感光体に伝送される。光信号は電気信号に変換され、カメラの感光体は、電気信号を処理のためにISPに伝送し、電気信号を可視画像に変換する。ISPはさらに、画像のノイズ、輝度、及び色に関してアルゴリズム最適化を行ってもよい。ISPはさらに、撮影シナリオの露光及び色温度などのパラメータを最適化してもよい。いくつかの実施形態では、ISPは、カメラ193内に配設されてもよい。
【0366】
カメラ193は、静止画像又はビデオをキャプチャするように構成されている。物体の光学画像は、レンズを通して生成され、感光体に投影される。感光体は、電荷結合素子(charge coupled device、CCD)又は相補型金属酸化物半導体(complementary metal-oxide-semiconductor、CMOS)フォトトランジスタであってもよい。感光体は、光信号を電気信号に変換した後、電気信号をデジタル画像信号に変換するために電気信号をISPに伝送する。ISPは、デジタル画像信号を処理のためにDSPに出力する。DSPは、デジタル画像信号をRGBフォーマット、YUVフォーマットなどの標準フォーマットの画像信号に変換する。いくつかの実施形態では、電子デバイスは、1つ又はN個のカメラ193を含んでもよく、Nは1よりも大きい正の整数である。
【0367】
デジタル信号プロセッサは、デジタル信号を処理するように構成されており、デジタル画像信号に加えて別のデジタル信号を処理してもよい。例えば、電子デバイスが周波数を選択するときに、デジタル信号プロセッサは、周波数エネルギーに対してフーリエ変換を行うように構成されている。
【0368】
ビデオ・コーデックは、デジタル・ビデオを圧縮又は解凍するように構成されている。電子デバイスは、1つ以上のビデオ・コーデックをサポートしてもよい。したがって、電子デバイスは、複数のコーディング・フォーマット、例えば、動画専門家グループ(moving picture experts group、MPEG)-1、MPEG-2、MPEG-3、及びMPEG-4のビデオを再生又は記録してもよい。
【0369】
NPUは、ニューラル・ネットワーク(neural-network、NN)計算プロセッサである。NPUは、例えば、ヒト脳ニューロン間の伝送モードである、生物学的ニューラル・ネットワークの構造を参照して入力情報を迅速に処理し、さらに、自己学習を連続的に行ってもよい。電子デバイスのインテリジェント認知などのアプリケーションは、NPUを介して実装されてもよく、例えば、画像認識、顔認識、音声認識、及びテキスト理解である。
【0370】
内部メモリ121は、1つ以上のランダム・アクセス・メモリ(random access memory、RAM)と、1つ以上の不揮発性メモリ(non-volatile memory, NVM)とを含んでもよい。
【0371】
ランダム・アクセス・メモリは、スタティック・ランダム・アクセス・メモリ(static random-access memory、SRAM)、ダイナミック・ランダム・アクセス・メモリ(dynamic random access memory、DRAM)、シンクロナス・ダイナミック・ランダム・アクセス・メモリ(synchronous dynamic random access memory、SDRAM)、ダブル・データ・レート・シンクロナス・ダイナミック・ランダム・アクセス・メモリ(double data rate synchronous dynamic random access memory、DDR SDRAM、例えば、通常DDR5 SDRAMと呼ばれる第5世代DDR SDRAM)などを含んでもよい。
【0372】
不揮発性メモリは、磁気ディスク記憶デバイスとフラッシュ・メモリ(flash memory)とを含んでもよい。
【0373】
フラッシュ・メモリは、動作原理に従って、NOR FLASH、NAND FLASH、3D NAND FLASHなどに分類されてもよいし、セルの電位レベルの数から、シングルレベル・セル(single-level cell、SLC)、マルチレベル・セル(multi-level cell, MLC)、トリプルレベル・セル(triple-level cell、TLC)、クワッドレベル・セル(quad-level cell、QLC)などに分類されてもよいし、記憶仕様に従って、ユニバーサル・フラッシュ・ストレージ(universal flash storage、UFS)、埋め込みマルチメディア・カード(embedded multimedia card、eMMC)などに分類されてもよい。
【0374】
ランダム・アクセス・メモリは、プロセッサ110によって直接読み書きされてもよいし、オペレーティング・システムの実行可能なプログラム(例えば、マシン命令)又は他の動作中のプログラムを記憶するように構成されてもよいし、ユーザのデータ、アプリケーションのデータなどを記憶するようにさらに構成されてもよい。
【0375】
不揮発性メモリはまた、プロセッサ110によって直接読み書きするために予めランダム・アクセス・メモリにロードされ得る実行可能なプログラム、ユーザのデータ、アプリケーションのデータなどを記憶してもよい。
【0376】
外部メモリ・インターフェース120は、外部不揮発性メモリに接続して、電子デバイスの記憶能力を拡張するように使用されてもよい。外部不揮発性メモリは、外部メモリ・インターフェース120を介してプロセッサ110と通信して、データ記憶機能を実装する。例えば、音楽、ビデオなどのファイルは外部不揮発性メモリに記憶される。
【0377】
電子デバイスは、オーディオ・モジュール170、スピーカ170A、受信機170B、マイクロホン170C、ヘッドセット・ジャック170D、アプリケーション・プロセッサなどを使用して、オーディオ機能、例えば、音楽の再生及び録音を実装してもよい。
【0378】
オーディオ・モジュール170は、デジタル・オーディオ情報をアナログ・オーディオ信号出力に変換するように構成されており、さらに、アナログ・オーディオ入力をデジタル・オーディオ信号に変換するように構成されている。オーディオ・モジュール170は、オーディオ信号をコード化及び復号化するようにさらに構成されてもよい。いくつかの実施形態では、オーディオ・モジュール170が、プロセッサ110内に配設されてもよいし、オーディオ・モジュール170のいくつかの機能モジュールが、プロセッサ110内に配設されてもよい。
【0379】
スピーカ170Aは、「ラウドスピーカ」とも呼ばれ、オーディオ電気信号を音声信号に変換するように構成されている。電子デバイス100は、スピーカ170Aを使用して、音楽を聞くか、又はハンズフリー通話に着呼してもよい。
【0380】
受信機170Bは、「イヤピース」とも呼ばれ、電気オーディオ信号をサウンド信号に変換するように構成されている。電子デバイスを使用して電話に出るか、声情報を受信するときに、受信機170Bを人間の耳の近くに置いて声を受信してもよい。
【0381】
「マイク」又は「マイクロホン」とも呼ばれるマイクロホン170Cは、音声信号を電気信号に変換するように構成されている。ユーザが電話をかけるか、又は声情報を送信するときに、ユーザは、ユーザの口を介してマイクロホン170Cの近くで音を発して、音信号をマイクロホン170Cに入力してもよい。少なくとも1つのマイクロホン170Cが、電子デバイス内に配設されてもよい。いくつかの他の実施形態では、2つのマイクロホン170Cが電子デバイス内に配設されて、音声信号をキャプチャすることに加えて、ノイズ低減機能を実装してもよい。いくつかの他の実施形態では、3つ、4つ、又はそれ以上のマイクロホン170Cが、代替的に、電子デバイス内に配設されて、音信号を収集し、ノイズを低減し、音源を識別し、方向性記録機能を実装するなどしてもよい。
【0382】
ヘッドセット・ジャック170Dは、有線ヘッドセットに接続するように構成されている。ヘッドセット・ジャック170Dは、USBポート130であってもよいし、3.5mmのオープン移動端末プラットフォーム(open mobile terminal platform、OMTP)標準インターフェース、又は米国のセルラー電気通信業界協会(cellular telecommunications industry association of the USA、CTIA)標準インターフェースであってもよい。
【0383】
圧力センサ180Aは、圧力信号を感知し、圧力信号を電気信号に変換するように構成されている。いくつかの実施形態では、圧力センサ180Aは、ディスプレイ194に配設されてもよい。抵抗圧力センサ、誘導圧力センサ、容量性圧力センサなどの複数のタイプの圧力センサ180Aが存在する。容量性圧力センサは、導電性材料で作製された少なくとも2つの平行プレートを含んでもよい。圧力センサ180Aに力が加えられると、電極間のキャパシタンスが変化する。電子デバイスは、キャパシタンスの変化に基づいて圧力強度を決定する。タッチ動作がディスプレイ194で実行されるときに、電子デバイスは圧力センサ180Aを使用することによってタッチ動作の強度を検出する。電子デバイスはまた、圧力センサ180Aの検出信号に基づいてタッチ場所を計算してもよい。いくつかの実施形態では、同じタッチ場所で行われるが、異なるタッチ動作強度を有するタッチ動作は、異なる動作命令に対応してもよい。例えば、タッチ動作の強度が第1の圧力閾値よりも小さいタッチ動作がメッセージ・アプリケーション・アイコンに対して行われるときに、SMSメッセージを閲覧するための命令が実行される。タッチ動作の強度が第1の圧力閾値以上であるタッチ動作がメッセージ・アプリケーション・アイコンに対して行われるときに、新しいSMSメッセージを作成するための命令が実行される。
【0384】
ジャイロ・センサ180Bは、電子デバイスの運動姿勢を決定するように構成されてもよい。いくつかの実施形態では、3つの軸(すなわち、軸x、y、及びz)を中心とする電子デバイスの角速度が、ジャイロ・センサ180Bを使用することによって決定されてもよい。ジャイロ・センサ180Bは、撮影中に手ぶれを補正を実装するように構成されてもよい。例えば、シャッタが押されると、ジャイロ・センサ180Bは、電子デバイスのジッタ角を検出し、その角度に基づいてレンズモジュールが補正すべき距離を計算し、レンズが、反転運動を介して電子デバイスのジッタをオフセットして、手ぶれ補正を実装することを可能にする。ジャイロ・センサ180Bは、ナビゲーション・シナリオ及び身体ゲーム・シナリオにおいてさらに使用されてもよい。
【0385】
気圧センサ180Cは、気圧を測定するように構成されている。いくつかの実施形態では、電子デバイスは、気圧センサ180Cによって測定された気圧値に基づいて高度を計算して、測位及びナビゲーションを支援する。
【0386】
磁気センサ180Dは、ホール・センサを含む。電子デバイスは、磁気センサ180Dを使用して、フリップ・カバーのレザー・ケースの開閉を検出してもよい。いくつかの実施形態では、電子デバイスがフリップ・フォンであるときに、電子デバイスは、磁気センサ180Dを使用して、フリップ・カバーの開閉を検出してもよい。さらに、カバーがフリップ式で開けられるときの自動ロック解除のような特徴は、レザー・ケースの検出された開閉状態又はフリップ・カバーの検出された開閉状態に基づいてセットされる。
【0387】
加速度センサ180Eは、電子デバイスの様々な方向(通常は3軸)における加速度を検出してもよい。電子デバイスが静止しているときに、重力の大きさと方向が検出され得る。加速度センサ180Eは、電子デバイスの姿勢を識別するようにさらに構成されてもよく、ランドスケープ・モードとポートレート・モードの間の切り替え、歩数計などのアプリケーションにおいて使用される。
【0388】
距離センサ180Fは、距離を測定するように構成されている。電子デバイスは、赤外線又はレーザを介して距離を測定してもよい。いくつかの実施形態では、撮影シナリオにおいて、電子デバイスは、距離センサ180Fを使用して距離を測定して、高速フォーカシングを実装してもよい。
【0389】
光学近接センサ180Gは、例えば、発光ダイオード(LED)及びフォトダイオードのような光学検出器を含んでもよい。発光ダイオードは、赤外線発光ダイオードであってもよい。電子デバイスは、発光ダイオードを使用して、赤外線を放出する。電子デバイスは、近くの物体からの赤外線反射光を、フォトダイオードを使用して、検出する。電子デバイスは、反射光が多いことを検出するときに、電子デバイスの近傍に物体が存在すると決定してもよい。電子デバイスは、反射光が多くはないことを検出するときに、電子デバイスの近くに物体が存在しないと決定してもよい。電子デバイスは、光近接センサ180Gを使用することによって、ユーザが電子デバイスを通話のために耳の近くに維持することを検出して、電力節約のためにディスプレイを自動的にオフにしてもよい。光近接センサ180Gはまた、スクリーンを自動的にロック解除又はロックするためにレザー・ケース・モード又はポケット・モードで使用されてもよい。
【0390】
周囲光センサ180Lは、周囲光の輝度を感知するように構成されている。電子デバイスは、感知された周囲光の明るさに基づいてディスプレイ194の明るさを適応的に調整してもよい。周囲光センサ180Lはまた、撮影中にホワイト・バランスを自動的に調整するように構成されてもよい。周囲光センサ180Lは、さらに、電子デバイスがポケット内にあるかどうかを検出するために、光学近接センサ180Gと協働して、意図的ではないタッチを避けてもよい。
【0391】
指紋センサ180Hは、指紋を収集するように構成されている。電子デバイスは、収集した指紋の特徴を使用して、指紋ベースのロック解除、アプリケーション・ロック・アクセス、指紋ベースの撮影、指紋ベースの呼応答などを実装してもよい。
【0392】
温度センサ180Jは、温度を検出するように構成されている。いくつかの実施形態では、電子デバイスは、温度センサ180Jによって検出された温度を使用することによって温度処理方針を実行する。例えば、温度センサ180Jによって報告された温度が閾値を超えるときに、電子デバイスは、温度センサ180Jの近くのプロセッサの実行を低下させて、電力消費を低減し、熱保護を実装する。いくつかの他の実施形態では、温度が別の閾値よりも低いときに、電子デバイスは、バッテリ142の熱を上げて、低温によって生じる電子でアビスの異常なシャットダウンを避ける。いくつかの他の実施形態では、温度が別の閾値よりも低いときに、電子デバイスは、バッテリ142の出力電圧をブーストして、低温によって生じる異常にシャットダウンを避ける。
【0393】
タッチ・センサ180Kは、「タッチ・デバイス」とも呼ばれる。タッチ・センサ180Kは、ディスプレイ194に配設されてもよく、タッチ・センサ180K及びディスプレイ194は、「タッチスクリーン」とも呼ばれるタッチスクリーンを構成する。タッチ・センサ180Kは、タッチ・センサで又はその近くのタッチ動作を検出するように構成されている。タッチ・センサは、タッチ・イベントのタイプを決定するために、検出したタッチ動作をアプリケーション・プロセッサに転送してもよい。タッチ操作に関連する視覚出力は、ディスプレイ194上に提供されてもよい。いくつかの他の実施形態では、タッチ・センサ180Kは、代替的には、電子デバイス表面上に配設されてもよく、ディスプレイ194とは異なる場所に位置する。
【0394】
骨伝導センサ180Mは、振動信号を取得してもよい。いくつかの実施形態では、骨伝導センサ180Mは、ヒト声帯部の振動骨の振動信号を取得してもよい。骨伝導センサ180Mはさらに、血圧脈動信号を受信するために、ヒトパルスと連絡を取ってもよい。いくつかの実施形態では、骨伝導センサ180Mは、代替的には、ヘッドセット内に配設されて、骨伝導ヘッドセットを取得してもよい。オーディオ・モジュール170は、声帯部分の振動骨のものであり、かつ骨伝導センサ180Mによって取得される振動信号に基づいて声信号を解析して、声機能を実装してもよい。アプリケーション・プロセッサは、骨伝導センサ180Mによって取得された血圧脈動信号に基づいて心拍数情報を解析して、心拍数検出機能を実装してもよい。
【0395】
ボタン190は、電源ボタン、ボリューム・ボタンなどを含む。ボタン190は、機械的なボタンであってもよいし、又はタッチ・ボタンであってもよい。電子デバイスは、ボタン入力を受信し、電子デバイスのユーザ・セッティング及び機能コントロールに関連するボタン信号入力を生成してもよい。
【0396】
モータ191は、振動プロンプトを生成してもよい。モータ191は、着呼振動プロンプト及びタッチ振動フィードバックを生成するように構成されてもよい。例えば、異なるアプリケーション(例えば、撮影及びオーディオ再生)に対して行われるタッチ動作は、異なる振動フィードバック効果に対応してもよい。ディスプレイ194の異なる領域に対して行われるタッチ動作に対して、モータ191は、異なる振動フィードバック効果に対応してもよい。異なるアプリケーション・シナリオ(例えば、時間リマインダ、情報受信、目覚まし時計、及びゲーム)はまた、異なる振動フィードバック効果に対応してもよい。タッチ振動フィードバック効果は、さらにカスタマイズされてもよい。
【0397】
インジケータ192は、インジケータ・ライトであってもよく、充電状態及び電力変化を示すように構成されてもよいし、メッセージ、不在着信、通知などを示すように構成されてもよい。
【0398】
SIMカード・インターフェース195は、SIMカードに接続するように構成されている。SIMカードは、SIMカード・インターフェース195に挿入されるか、又はSIMカード・インターフェース195から取り外されて、電子デバイスとの接触又は電子デバイスからの分離を実装してもよい。電子デバイスは、1つ又はN個のSIMカード・インターフェースをサポートしてもよく、Nは1よりも大きい正の整数である。SIMカード・インターフェース195は、ナノSIMカード、マイクロSIMカード、SIMカードなどをサポートすることができる。複数のカードが同じSIMカード・インターフェース195に同時に挿入されてもよい。複数のカードは、同じタイプのものであっても、異なるタイプのものであってもよい。SIMカード・インターフェース195は、異なるタイプのSIMカードと互換性がある。SIMカード・インターフェース195はまた、外部記憶カードと互換性があってもよい。電子デバイスは、SIMカードを使用してネットワークと対話し、呼び出しやデータ通信などの機能を実装する。いくつかの実施形態では、電子デバイスは、eSIM、すなわち、埋め込まれたSIMカードを使用する。eSIMカードは、電子デバイスに埋め込まれてもよく、電子デバイスから分離することができない。
【0399】
次いで、この出願の一実施形態による、電子デバイスのソフトウェア・アーキテクチャが説明される。
【0400】
図20は、この出願の一実施形態による、電子デバイスのソフトウェア・アーキテクチャの一例の概略図である。
【0401】
図20に示すように、層状アーキテクチャを使用して、ソフトウェアは、いくつかの層に分割されており、各層は、明確な役割及びタスクを有する。これらの層は、ソフトウェア・インターフェースを介して互いに通信する。いくつかの実施形態では、システムは、上から下までの4つの層、すなわち、アプリケーション層、アプリケーション・フレームワーク層、システム・ライブラリ、及びカーネル層に分割される。
【0402】
アプリケーション層は、一連のアプリケーション・パッケージを含んでもよい。
図20に示すように、アプリケーション・パッケージは、カメラ、ギャラリー、カレンダー、電話、地図、ナビゲーション、WLAN、ブルートゥース、音楽、ビデオ、メッセージなどのアプリケーション(又はアプリケーションと呼ばれる)を含んでもよい。
【0403】
アプリケーション・フレームワーク層は、アプリケーション層におけるアプリケーションのためのアプリケーション・プログラミング・インターフェース(application programming interface、API)と、プログラミング・フレームワークを提供する。アプリケーション・フレームワーク層は、いくつかの事前定義された機能を含む。
【0404】
図20に示すように、アプリケーション・フレームワーク層は、ウィンドウ管理サービス、表示管理サービス、コンテンツ・プロバイダ、ビュー・システム、電話マネージャ、リソース・マネージャ、通知マネージャ、ローカル・プロファイル管理アシスタント(Local Profile Assistant、LPA)などを含んでもよい。
【0405】
ウィンドウ管理サービスは、ウィンドウの開始、追加、及び削除を担当し、ウィンドウに表示されているアプリケーションの決定、アプリケーション層の作成、破棄、及びプロパティ変更の決定、ステータス・バーの有無の判断、画面のロック、画面のキャプチャなどを行うことができる。
【0406】
表示管理サービスは、表示領域の数及び表示領域のサイズを取得することができ、表示領域の開始、追加、及び削除を担当する。
【0407】
コンテンツ・プロバイダは、データを記憶及び取得し、アプリケーションによってデータにアクセスすることが可能になるように構成されている。データは、ビデオ、画像、オーディオ、発呼及び着呼、閲覧履歴及びブックマーク、電話帳などを含んでもよい。
【0408】
電話マネージャは、例えば、通話状態の管理(着呼、着信拒否などを含む)など、電子デバイスの通信機能を提供するように構成されている。
【0409】
リソース・マネージャは、ローカライズされた文字列、アイコン、ピクチャ、レイアウト・ファイル、ビデオ・ファイルなどの様々なリソースをアプリケーションに提供する。
【0410】
通知マネージャは、アプリケーションがステータス・バーに通知情報を表示することを可能にし、ユーザの対話を必要とせずに短い一時停止の後に自動的に消え得る通知メッセージを搬送するように構成されてもよい。例えば、通知マネージャは、ダウンロード完了を通知し、メッセージ通知を提供するなどを行うように使用される。通知マネージャは、代替的には、グラフ又はスクロール・バー・テキストの形式でシステムの最上位ステータス・バーに現れる通知、例えば、バックグラウンドで動作しているアプリケーションの通知であってもよいし、ダイアログ・インターフェースの形態でスクリーンに現れる通知であってもよい。例えば、テキスト情報がステータス・バーに表示されるか、プロンプト・トーンが作製されるか、電子デバイスが振動するか、又はインジケータ・ライトが点滅する。
【0411】
ビュー・システムは、テキストを表示するためのコントロール、ピクチャを表示するためのコントロールなどの視覚的コントロールを含む。ビュー・システムは、アプリケーションを構築するように構成されてもよい。ディスプレイ・インターフェースは、1つ以上のビューを含んでもよい。例えば、SMSメッセージ通知アイコンを含む表示インターフェースは、テキストを表示するためのビューと、ピクチャを表示するためのビューとを含んでもよい。
【0412】
アプリケーション・フレームワーク層は、アニメーション・システムをさらに含んでもよい。
【0413】
図20に示すように、この出願の一実施形態で提供されるアニメーション効果表示方式を行うアニメーション・システムは、以下のステップを含む。
【0414】
S2001:アニメーション・インターフェースを介してアニメーション効果を設定する。
【0415】
アニメーション・システムは、アプリケーション開発者にアニメーション・インターフェースを提供する。アプリケーション開発者は、アニメーション・インターフェースを呼び出すことによって、任意の1つ以上のコントロールに対してアニメーション効果を設定してもよい。
【0416】
S2002:アニメーション効果の継続時間、アニメーション効果の終了フレームの記述情報などを決定する。
【0417】
アプリケーションが動作を開始し、アニメーション・トリガ・イベントを受信した後、アニメーション・システムは、アニメーション効果の継続時間、アニメーション効果の終了フレームに関する記述情報などを決定してもよい。
【0418】
S2003:アニメーション効果の継続時間中に各フレームに関する記述情報を決定する。
【0419】
次いで、アニメーション・システムは、アニメーション効果の継続時間と、アニメーション効果の終了フレームに関する記述情報と、アニメーション効果の開始時間と、レンダリングが現在行われているフレームの時間とに基づいて、レンダリングが現在行われているフレームに関する記述情報を決定してもよい。レンダリングが現在行われているフレームに関する記述情報は、そのフレームに対するコントロールのプロパティを含む。
【0420】
S2004:各フレームに関する記述情報に基づいて、レンダー・ツリーを更新する。
【0421】
次いで、アニメーション・システムは、レンダリングが現在行われているフレームに関する記述情報に基づいて、レンダー・ツリーを更新する。
【0422】
最後に、更新されたレンダー・ツリーが、基礎となるグラフィックス処理ライブラリに転送され、基礎となるグラフィック処理ライブラリが、GPU又はCPUを呼び出して、特定の描画動作を行って、ビットマップを生成する。ビットマップは、ディスプレイ・ドライバによって受信され、次いで表示のために送信される。
【0423】
ランタイムは、カーネル・ライブラリ及び仮想マシンを含む。ランタイムは、オペレーティング・システムのスケジューリングと管理を担当する。
【0424】
カーネル・ライブラリは、2つの部分、すなわち、Java言語で呼び出される機能と、カーネル・ライブラリとを含む。
【0425】
アプリケーション層及びアプリケーション・フレームワーク層は、仮想マシン上で動作する。仮想マシンは、アプリケーション層及びアプリケーション・フレームワーク層におけるJavaファイルをバイナリ・ファイルとして実行する。仮想マシンは、オブジェクト・ライフサイクル管理、スタック管理、スレッド管理、セキュリティ及び例外管理、ガーベジ・コレクションなどの機能を行うために使用される。
【0426】
システム・ライブラリは、複数の機能モジュール、例えば、サーフェス・マネージャ(surface manager)、メディア・ライブラリ(Media Library)、及びグラフィック処理ライブラリを含んでもよく、グラフィック処理ライブラリは、3次元グラフィック処理ライブラリ(例えば、OpenGL ES)、及び2次元グラフィック・エンジン(例えば、SGL)を含んでもよい。
【0427】
サーフェス・マネージャは、ディスプレイ・サブシステムを管理し、複数のアプリケーションのために2次元(2-Dimensional、2D)及び3次元(3-Dimensional、3D)層の融合を提供するように構成されている。
【0428】
メディア・ライブラリは、静止画像ファイル等と同様に、複数の一般的に使用されるオーディオ及びビデオ・フォーマットでの再生及び記録をサポートする。メディア・ライブラリは、MPEG-4、H.264、MP3、AAC、AMR、JPG、PNGなどの複数のオーディオ及びビデオ符号化フォーマットをサポートしてもよい。
【0429】
3次元グラフィック処理ライブラリは、3Dグラフィック描画、画像レンダリング、層合成、層処理などを実装するように構成されている。
【0430】
2Dグラフィック・エンジンは、2D描画のための描画エンジンである。
【0431】
カーネル層は、ハードウェアとソフトウェアとの間の層である。カーネル層は、少なくともディスプレイ・ドライバ、カメラ・ドライバ、オーディオ・ドライバ、センサ・ドライバ、及び仮想カード・ドライバを含む。
【0432】
文脈に従って、前述の実施形態において使用される「~とき」という用語は、「~の場合」、「~の後」、「~と決定することに応答して」、又は「検出することに応答して」として解釈されてもよい。同様に、文脈に従って、「~であると決定されたときに」又は「(条件若しくはイベントが述べられたもの)が検出された場合」という語句は、「~であると決定された場合」、「~と決定することに応答して」、「(条件若しくはイベントが述べられたもの)が検出されたときに」、又は「(条件若しくはイベントが述べられたもの)を検出することに応答して」と解釈されてもよい。
【0433】
前述の実施形態の全て又は一部は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせによって実装されてもよい。ソフトウェアが上述の実施形態を実装するために使用されるときに、実施形態の全部又は一部は、コンピュータ・プログラム製品の形態で実装されてもよい。コンピュータ・プログラム製品は、1つ以上のコンピュータ命令を含む。コンピュータ・プログラム命令がロードされ、コンピュータ上で実行されるときに、この出願の実施形態による手順又は機能が、全部又は一部生成される。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータ・ネットワーク、又は他のプログラム可能な装置であってもよい。コンピュータ命令は、コンピュータ可読記憶媒体に記憶されてもよいし、1つのコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に伝送されてもよい。例えば、コンピュータ命令は、ウェブサイト、コンピュータ、サーバ、又はデータ・センタから、有線(例えば、同軸ケーブル、光ファイバ、又はデジタル加入者線)又は無線(例えば、赤外線、ラジオ、又はマイクロ波)において別のウェブサイト、コンピュータ、サーバ、又はデータ・センタに伝送されてもよい。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体、又は1つ以上の使用可能な媒体を一体化するサーバ若しくはデータ・センタなどのデータ記憶デバイスであってもよい。使用可能な媒体は、磁気媒体(例えば、フロッピー・ディスク、ハード・ディスク、又は磁気テープ)、光媒体(例えば、DVD)、又は半導体媒体(例えば、ソリッド・ステート・ドライブ)などであってもよい。
【0434】
当業者であれば、実施形態における方法の全部又は一部の手順は、関係するハードウェアに命令するコンピュータ・プログラムによって実装されてもよいと理解してもよい。プログラムは、コンピュータ可読記憶媒体に記憶されてもよい。プログラムが動作されるときに、実施形態における方法の手順が行われる。前述の記憶媒体は、ROM、ランダム・アクセス・メモリRAM、磁気ディスク、又は光ディスクのような、プログラム・コードを記憶することができる任意の媒体を含む。
【手続補正書】
【提出日】2024-04-30
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0346
【補正方法】変更
【補正の内容】
【0346】
I2Cインターフェースは、シリアル・データ・ライン(serial data line、SDA)及びシリアル・クロック・ライン(serial clock line、SCL)を含む双方向同期シリアル・バスである。いくつかの実施形態では、プロセッサ110は、複数のI2Cバスのグループを含んでもよい。プロセッサ110は、異なるI2Cバス・インターフェースを介して、タッチ・センサ180K、充電器、懐中電灯、カメラ193などに別々に結合されてもよい。例えば、プロセッサ110は、I2Cインターフェースを介してタッチ・センサ180Kに結合されてもよく、プロセッサ110が、I2Cバス・インターフェースを介してタッチ・センサ180Kと通信して、電子デバイスのタッチ機能を実装するようにする。
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
電子デバイスに適用されるアニメーション効果表示方法であって、
アプリケーションのUIスレッドによって、アニメーション・トリガ・イベントを受信した後、前記アプリケーションによってセットされた第1のコントロール群の第1のアニメーション効果に関する情報に基づいて、前記第1のアニメーション効果の継続時間と、前記第1のアニメーション効果の開始時間と、前記第1のアニメーション効果の終了フレームに関する記述情報を決定することであって、前記第1のコントロール群は、1つ以上のコントロールを含み、前記アニメーション・トリガ・イベントは、前記第1のアニメーション効果の表示をトリガするために使用される、ことと、
前記第1のアニメーション効果の前記継続時間中にターゲット・フレームの表示データを生成するときに、前記第1のアニメーション効果の前記開始時間、前記第1のアニメーション効果の前記継続時間、前記ターゲット・フレームに対応する時間、及び前記第1のアニメーション効果の前記終了フレームに関する記述情報に基づいて、前記ターゲット・フレームに関する記述情報を決定することと、
前記アプリケーションのレンダリング・スレッド又はレンダリング・プロセスによって、前記ターゲット・フレームに関する前記記述情報に基づいて、前記ターゲット・フレームの前記表示データを生成することと、を含む、方法。
【請求項2】
前記第1のアニメーション効果に関する情報は、システムによって提供されるアニメーション・インターフェースを介して前記アプリケーションによって設定される、請求項1に記載の方法。
【請求項3】
前記第1のアニメーション効果の前記継続時間中にターゲット・フレームの表示データを生成するときに、前記第1のアニメーション効果の開始時間、前記第1のアニメーション効果の前記継続時間、前記ターゲット・フレームに対応する時間、及び前記第1のアニメーション効果の前記終了フレームに関する記述情報に基づいて、前記ターゲット・フレームに関する記述情報を決定することは
、
前記UIスレッド又は前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記第1のアニメーション効果の前記開始時間、前記第1のアニメーション効果の前記継続時間、前記ターゲット・フレームに対応する前記時間、及び前記第1のアニメーション効果の前記終了フレームに関する記述情報に基づいて、前記ターゲット・フレームに関する前記記述情報を決定することを含む、請求項1又は2に記載の方法。
【請求項4】
前記方法は、
前記UIスレッドによって、前記第1のアニメーション効果の前記終了フレームに関する前記記述情報に基づいて、前記第1のアニメーション効果の前記終了フレームにおけるコントロールのプロパティを決定することと、
前記UIスレッドによって、前記第1のアニメーション効果の前記終了フレームにおける前記コントロールの前記プロパティと、前記第1のアニメーション効果が開始する前に示されたコントロールのプロパティとを比較して、第2のコントロール群を決定することであって、前記第2のコントロール群は、前記第1のアニメーション効果の前記継続時間中にプロパティ変化するコントロールであり、前記第2のコントロール群は、前記第1のコントロール群を含む、ことと、
前記第1のコントロール群が、前記第1のアニメーション効果によって表示され、前記第2のコントロール
群のうち前記第1のコントロール群以外のコントロールが、第2のアニメーション効果によって表示され、前記アニメーション・トリガ・イベントが、前記第2のアニメーション効果の表示をトリガするためにさらに使用されることと、を含む、請求項1
又は2に記載の方法。
【請求項5】
前記ターゲット・フレームに関する前記記述情報は、前記ターゲット・フレームにおける前記第2のコントロール群のうちの前記コントロールのプロパティを決定するためにさらに使用され、前記コントロールの前記プロパティは、前記コントロールのサイズ、前記コントロールの場所、及び前記コントロールの透明度のうちの少なくとも1つを含む、請求項4に記載の方法。
【請求項6】
レンダリング・スレッド又はレンダリング・プロセスによって、前記ターゲット・フレームの前記記述情報に基づいて、前記ターゲット・フレームの前記表示データを生成することは
、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記ターゲット・フレームに関する前記記述情報に基づいて第1のレンダー・ツリーを更新し、前記レンダリング・スレッド又は前記レンダリング・プロセスによって、更新された第1のレンダー・ツリーに基づいて前記ターゲット・フレームの前記表示データを生成することを含む、請求項
1に記載の方法。
【請求項7】
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記ターゲット・フレームに関する前記記述情報に基づいて第1のレンダー・ツリーを更新することは
、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記ターゲット・フレームにおけ
る第2のコントロール群のうちの前記コントロールのプロパティに基づいて前記第1のレンダー・ツリーを更新することを含む、請求項6に記載の方法。
【請求項8】
前記方法は、
前記第2のコントロール群が、第3のコントロールを含むことと、
前記レンダリング・スレッド又は前記レンダリング・プロセスによって、前記第3のコントロールのサイズと予め設定されたポリシーとに基づいて、前記第3のコントロールで保持されるコンテンツのサイズを調整することであって、前記保持されるコンテンツは、画像及びテキストのうちの少なくとも1つを含む、ことと、を含む、請求項7に記載の方法。
【請求項9】
前記第3のコントロールは、画像コントロールImageViewであり、前記第3のコントロールで保持される前記コンテンツは、第1の画像であり、
前記ポリシーは、前記第3のコントロールのサイズと前記第1の画像のサイズとを比較し、前記第1の画像をクロッピング又はスケーリングすることを含む、請求項8に記載の方法。
【請求項10】
前記第3のコントロールは、テキスト・コントロールTextViewであり、前記第3のコントロールで保持される前記コンテンツは、第1のテキストであり、
前記ポリシーは、前記第3のコントロールの幅と前記第1のテキストの幅とを比較し、前記第1のテキストに対して行分割又は行結合を行うことを含む、請求項8に記載の方法。
【請求項11】
前記第1のレンダー・ツリーは、前記第1のアニメーション効果の前記終了フレームに対応するレンダー・ツリーであるか、又は
前記第1のレンダー・ツリーは、前記第1のアニメーション効果が開始される前に示されるインターフェースに対応するレンダー・ツリーである、請求項6~10のいずれか一項に記載の方法。
【請求項12】
電子デバイスであって、前記電子デバイスが、1つ以上のプロセッサ及びメモリを含み、
前記メモリは、前記1つ以上のプロセッサに結合され、前記メモリは、コンピュータ・プログラム・コードを記憶するように構成されており、前記コンピュータ・プログラム・コードは、コンピュータ命令を含み、前記1つ以上のプロセッサは、前記コンピュータ命令を呼び出して、前記電子デバイスが、請求項
1に記載の方法を行うことを可能にする、電子デバイス。
【請求項13】
電子デバイスに適用されるチップ・システムであって、前記チップ・システムは、1つ以上のプロセッサを含み、前記
1つ以上のプロセッサは、コンピュータ命令を呼び出して、前記電子デバイスが、請求項
1に記載の方法を行うことを可能にする、チップ・システム。
【請求項14】
命令を含むコンピュータ可読記憶媒体であって、前記命令が電子デバイス上で動作されるときに、前記電子デバイスは、請求項
1に記載の方法を行うことが可能となる、コンピュータ可読記憶媒体。
【請求項15】
コンピュータ可読命令を含むコンピュータ・プログラ
ムであって、前記コンピュータ可読命令が1つ以上のプロセッサによって実行されるときに、請求項
1に記載の方法が実装される、コンピュータ・プログラ
ム。
【国際調査報告】