15

私はかなり「初心者」の Android 開発者で、最初のプロジェクトの 1 つをライブ壁紙にしたいと思っていますが、そのために Canvas と OpenGL のどちらに焦点を当てる必要があるかについて葛藤しています。これに慣れていないので、Canvas の方が使いやすいので、最初にマスターする必要があることはわかっていますが、興味のある実際のプロジェクトから学ぶことを好みます。

私は以前に両方を非常に基本的な方法で使用したことがあり、それらの一般的な概念は理解していますが、ライブ壁紙の領域にどのように移行するかはわかりません. 最大 FPS で実行すると必要以上にバッテリーが消耗するため、ライブ壁紙では OpenGL の本格的な速度は必要ないと考えていますが、同時に Canvas を使用すると遅延が発生し、ホーム画面の変更などを行うと途切れます。

私は OpenGL ES 2.0 の使用に傾倒してきました。これは、パフォーマンスを最適に保つためと、壁紙に関する私の最初のアイデアには多くのレイヤリングが含まれていたため、Canvas が可能かどうかはわかりませんが、経験豊富な開発者の意見を求めています。または、OpenGL の使用に伴うすべての追加作業 (特に、私が読んだライブ壁紙に関連するもの) がそれだけの価値があるわけではありません。

4

2 に答える 2

9

キャンバス (SDK の立方体の例など) に描画するだけで済めば、作業は大幅に軽減されます。アニメーションの単純さ (ビットマップなし) により、立方体は問題なく高いフレーム レートを達成できます。

OpenGL を使用する場合は、GLWallpaperService、AndEngine、RenderScript などの補助パッケージを使用する必要があります。

http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers

http://www.andengine.org/forums/tutorials/live-wallpaper-template-t258.html

Android ソース コードを参照して、ストック壁紙 (Grass、Galaxy など) が RenderScript を使用してどのように実装されているかを確認してください。このリンク機能する可能性がありますが、保証はありません: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.1.1_r1/com/android/wallpaper/ (次に、壁紙まで下にスクロールします)

Moonblink は彼のプロジェクトを中止しましたが、もしあなたが本当に熱心なら、彼の仕事 (Substrate) をここから調べてみることができます: http://code.google.com/p/moonblink/source/browse/wiki/Setup.wiki

于 2011-06-26T18:17:28.680 に答える
6

プロジェクトの途中で OpenGL を使用することになりました。キャンバスの描画は、私が達成しようとしていたものに対して遅すぎることが判明しました。OpenGL を使用すると、パフォーマンスが大幅に向上しました。残念ながら、コードをリファクタリングする必要があったため、最初から OpenGL を使用することをお勧めします。ダーティ レンダリングは OpenGL でサポートされており、壁紙サービスの構造はレンダリング方法に依存しないため、バッテリーを消耗しない壁紙を作成することができます。実際、適切にプログラムされた壁紙は、非表示になっているとレンダリングされません。Android に同梱されている壁紙はそのパターンに従っていないため、ライブ壁紙はバッテリーを吸うという悪い名前が付けられています。本当に残念..

于 2011-06-26T20:53:13.190 に答える