私の問題はおそらく本当に単純です。私は最近、Android 用のライブ壁紙の作成 (および一般的な Android コーディング) を始めましたが、見つけるのが本当に難しいため、ライブ壁紙コーディングの背後にある基本が不足しています。
2 つ (またはそれ以上) の「レイヤー」を持つライブ壁紙を作成したいと思います。私の2つのいわゆるレイヤーは次のとおりです。
- タッチイベントに反応する背景
- 一番上にあるビットマップ
現時点では、次のような単一のキャンバスにすべてを描画しています。
Resources res = getResources();
Bitmap image = BitmapFactory.decodeResource(res, R.drawable.image);
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
c.drawARGB(aa, rr, gg, bb);
c.drawBitmap(image, 0, 0, paint);
}
} finally {
if (c != null) holder.unlockCanvasAndPost(c);
}
動作しますが、各フレームの再描画でこの比較的大きな PNG ファイルを描画しているため、パフォーマンスは非常に悪いです。
ライブ壁紙でビットマップを表示する最良の方法を教えてください。後でそれらをアニメーション化する方法(基本的には開始位置を変更するだけ)と同様に、毎回再描画する必要はありませんか?最後に、ライブ壁紙で z-index (複数のレイヤーを持つ) を決定する方法 - これは「通常のアプリ」のように XML でも実行できますか?