Nova Launcher が Google Pixel スマートフォンでより適切に動作する理由は次のとおりです

Google は、Nova Launcher などのサードパーティ製ランチャーでより滑らかな遷移アニメーションを表示できるようにする API を追加しました。 現在、この機能を備えているのは Pixel スマートフォンのみです。

以前は、サードパーティのランチャー アプリは、ほとんどの Android スマートフォンに搭載されている標準のランチャーよりも優れたエクスペリエンスを提供することがよくありました。 ただし、最近のアプリ画面の刷新と Android 9 Pie でのジェスチャーの導入により、 これらの新しいエクスペリエンスがストックに統合されたため、サードパーティのランチャーは不利な立場に置かれました ランチャーアプリ。 時間をかけて、Google はジェスチャーを使用する際のサードパーティ製ランチャーのエクスペリエンスがそれほどひどいものにならないように努めてきましたが、最近では実際にこれで成功し始めています。

過去数か月間、Google Pixel スマートフォンで最近の Nova Launcher ベータ リリースを使用したことがある場合は、ジェスチャ ナビゲーションを使用するときに滑らかなアニメーションに気づいたかもしれません。 残念ながら、少なくとも現時点では、他のデバイスで Nova Launcher を使用する場合、同じアニメーションは表示されません。 その理由を理解するには、まず Nova Launcher などのサードパーティ製ランチャーと Google の Pixel Launcher などの標準ランチャーとの違いを簡単に説明する必要があります。

Googleが初めてジェスチャーナビゲーションを導入 Android 9 Pieで. ジェスチャーをできるだけ滑らかに見せるために、Google はアプリの遷移をシームレスに見せる必要がありました。 また、ユーザーが最近のアプリ画面からアプリ リスト全体にアクセスできるようにしたいと考えていました。 これらの両方を実現するために、Google は最近のアプリ画面を処理するコードを Android から移動することを決定しました。 SystemUI から Launcher3 へ。ほとんどの OEM ストック ランチャーのフォーク元となる Android のオープンソース ランチャー アプリ。 したがって、

クイックステップ コンポーネントが誕生しましたが、その特権的な性質により、Android ではプレインストールされたランチャー アプリのみを最近のアプリ プロバイダーとして設定できます。 これは可能です root アクセス権で上書きされる サードパーティのランチャーがサポートしている場合は除きますが、ほとんどのユーザーにとって、これは、サードパーティのランチャー アプリがジェスチャや最近使用したアプリ画面を処理するために常にストック ランチャーに依存することを意味します。 おそらくほとんどの人が経験したことがあるでしょうが、その結果は、トランジションが滑らかでシームレスに見えず、少し不安定になる可能性があります。 ただし、Google Pixel スマートフォンを使用している場合は別です。

ほとんどの Google Pixel スマートフォンには、アプリからホーム画面に戻る遷移をよりネイティブに見せるためにサードパーティのランチャーが使用できる API が存在します。 一部のサードパーティ製ランチャー アプリ ナイアガラランチャー および前述の Nova Launcher はこの API を利用していますが、後者には API が含まれているだけです。 開発中の v7 ビルド. この API を使用すると、ユーザーがスワイプしてホームに戻るジェスチャを実行するたびに、サードパーティのランチャー アプリは QuickStep からインテントとコールバックを受け取ります。 サードパーティのランチャーは、ウィンドウがアプリのアイコン上に最小化されるときに、ウィンドウをアニメーション化する方法をジェスチャー システムにヒントを与えることができます。

これが Niagara Launcher でどのように見えるかの例です。ランチャーの開発者の厚意により提供されています。 8ビットピット:

これは、アニメーションがどのように見えるかを示す比較です。 ASUS ROG Phone 5 そして グーグルピクセル4、どちらも Nova Launcher v7.0.25 (公開時点での最新ベータ リリース) と Android 11 を実行しています。

\r\n https://www.youtube.com/watch? v=equ-8yDw_Do\r\n

ここで、この API は Google Pixel スマートフォン専用なのでしょうか? と疑問に思われるかもしれません。 答えは「いいえ」です。 API は Launcher3/QuickStep の一部であり、 AOSP で見つけることができますつまり、あらゆる OEM ランチャー アプリにオープンです。 一方、API Launcher3 にコミットされました 2020年7月21日に内部的にはそうだったようです AOSP マスター ブランチにマージされました 12 月には Android R QPR1 がリリースされます。

Nova Launcher と Niagara Launcher を Google Pixel スマートフォンでよりネイティブに感じさせる API。

Nova Launcher の開発者であり、この API を最初に発見した人の 1 人である Kevin Barry 氏は、 OEM が Launcher3 のフォークでこの API を使用していない理由は、Android 11 のリリースが少し遅れたためです。 サイクル。 AOSP の大きな変更をマージするにはかなりの労力がかかり、Android R QPR1 アップデートには間違いなくそれらの多くの変更が含まれていました。 数年前までは、こうしたコードのドロップを「メンテナンス リリース」と呼んでいましたが、OEM からの反発を受けて、Google は実際にはメンテナンス リリースを行っていません (そう聞いたことがあります)。 これが、人気のある Android カスタム ROM である LineageOS がその最新リリースを「」と呼ぶ理由です。リネージュOS 18.1「LineageOS 18」ではなく「」は、ROM が初期の Android 11 リリースではなく、最新の Android 11 コードベースに基づいていることを示します。

この API は、 12 月のピクセル機能のドロップ、Android R QPR1 のパブリック リリースと同時にリリースされます。 そして、Pixel 2 がその機能を備えているにもかかわらず、 12月の最終更新、そのアップデートには Android R QPR1 コードベースが含まれていなかったため、Nova Launcher v7 を実行している Pixel 2 の所有者は他の Pixel と同じエクスペリエンスを得ることができませんでした。 (Pixel 2 の所有者は、より新しい Pixel デバイスの API を備えた新しいバージョンの Pixel Launcher をサイドロードできますが、 ユーザーレポートによると アニメーションは時々動作する場合でも、依然としてバグがあります。 念のために言っておきますが、Pixel Launcher はほとんどの標準ランチャーと同様に Launcher3 の上に構築されていますが、Pixel 独自の機能もいくつか含まれています。)

では、この API を他の Android デバイスに追加するには何が必要でしょうか? 残念ながら、各 OEM がランチャー アプリをどのように開発しているか正確にはわかっていないため、これに対する簡単な答えはありません。 どのようにして Googleは全画面ジェスチャーナビゲーションを厳密に制御、ほとんどの OEM はジェスチャや QuickStep に関連するコードを大幅に変更していないと思われます。 OEM がわざわざコミットを元に戻したり、コードを壊したり、更新を拒否したりしない限り、 Launcher3 の場合、OEM ランチャーがその上にリベースされるたびに、この API が OEM ランチャーに追加されるはずです。 今後の アンドロイド12 リリース。 実際、私たちが話を聞いた OEM の 1 つである ASUS は、Android 12 アップデートでこの API を導入する予定だと語っていました。 Google がこの変更を OEM に伝えたかどうかはわかりませんが、より多くの OEM がこの変更に注目することを願っています そして、サードパーティの使用エクスペリエンスを向上させるために、Launcher3 のフォークに API を組み込むことを決定しました。 ランチャー。

しかし、仕事はそこで終わるわけではありません。 この API を含めた後でも、サードパーティ製ランチャーと OEM ランチャーとの間で同等性を実現するには、まだやるべき作業が残っています。 たとえば、一部の OEM デバイスは、ホーム画面へのアニメーションが表示される前にユーザーが画面をタップするとちらつきます。 場合によっては、選択したサードパーティ製ランチャー アプリの代わりにシステム ランチャー アプリが表示されることがあります (私も何度かこのようなことが起こりました)。 遷移アニメーションが改善されたのは素晴らしいことですが、ランチャー アプリや最近のアプリ画面のバグに対処したい人はいないため、ジェスチャー コードには依然としてクリーンアップや標準化が必要です。

この記事に協力してくれた Kevin Barry と Peter Huber に感謝します。