1

私は最初の Android プロジェクトであるライブ壁紙に取り組んでいます。画面上で常に飛ぶために、プロジェクトにいくつかの画像が必要です。画像は下から上に飛ぶ必要がありますが、背景が空にならないように常に飛ぶ必要があります。これは私のコードの一部ですが、それ以上のものが必要であることはわかっています。

void draw(Canvas c) {
    c.save();
    c.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.wallpaper1), 0, 0, null);
    double tmp = Math.sin(fiX * Math.PI / 180F) * 20;
    Bitmap bm = BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.heart_s);
    c.drawBitmap(bm, 100 + (int) tmp, posY, paint);

    double tmp1 = Math.sin(fiX * Math.PI / 180F) * 20;
    Bitmap bm1 = BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.heart1);
    c.drawBitmap(bm1, 300 + (int) tmp1, posY, paint);

    double tmp2 = Math.sin(fiX * Math.PI / 180F) * 20;
    Bitmap bm2 = BitmapFactory.decodeResource(getBaseContext().getResources(), R.drawable.heart3);
    c.drawBitmap(bm2, 200 + (int) tmp2, posY, paint)

    posY = posY -direction;
    fiX = fiX + 10;

    if(posY < 0) {
        //posY = getResources().getDisplayMetrics().heightPixels;
        direction = 5;                  
    }

    if(posY > getResources().getDisplayMetrics().heightPixels) {
        direction = 5;                                      
    }
    if(fiX > 180) {
            fiX = 0;
    }
    c.restore();
}
4

1 に答える 1

2

draw メソッド呼び出しの最後に、ビューを無効にします。これにより、ドローのループが開始されます。

描画の最初にアニメーション ロジックを追加し、いくつかの drawModel を作成し、このロジックを使用して更新します。次に、モデルに従って画像の位置を変更します。

void draw(Canvas canvas) {
    handleUpdateModelEvent();
    onDraw();
    invalidate();
}

private void handleUpdateModelEvent(){

}

private void onDraw(){
   // in MVC this method should be called from model change event
}
于 2012-10-22T08:29:37.523 に答える