0

画面の上部から画面の下部に到達するまで画像を移動して、ドロップピンのような効果を与えています。正常に動作していますが、問題はアニメーション効果にあります。これをできるだけスムーズにしたいのですが、このドロップ効果でジャークを簡単に見つけることができます。

これを実現するために、Surfaceviewとスレッドを使用しました。スレッドは画像の位置を1ピクセルずつ更新し続け、更新された座標を持つ画像が描画されるSurfaceviewのonDraw(canvas)メソッドを呼び出します。

これがいくつかのコードスニペットです。まず、画像の座標を数ピクセルずつ更新し続ける描画スレッド。

while(mRun){
    canvas = null;
    try{
        canvas = mSurfaceHolder.lockCanvas();
        //increment the coordinate by 5 pixels
            image.getCoordinate.setX(image.getCoordinate.getX + 5);
            image.getCoordinate.setY(image.getCoordinate.getY + 5);

        synchronized (mSurfaceHolder) {

            //call onDraw method to update position on canvas
            mPanel.onDraw(canvas);
        }

    }finally{
        if(canvas != null){
            mPanel.getSurfaceHolder().unlockCanvasAndPost(canvas);
        }
    }
}

次に、更新された画像をキャンバスに描画するSurfaceViewクラスのonDrawメソッド:

canvas.drawBitmap(image, image.getCoordinate().getX(),image.getCoordinate().getY(), null);

これは単純なようですが、ジャークがあり、これらのジャークを回避するいくつかの方法を探しています。

前もって感謝します。

4

1 に答える 1

0

@Saurabh Pareek:素敵な提案をしてくれたバディに感謝します。

私はエミュレーターで同じことをテストしていました。しかし、同じものをデバイスで実行しようとすると、正常に機能しました。ぎくしゃくしたり、かなりいいアニメーションはありません。

于 2012-06-04T11:46:45.827 に答える