2012-04-23 1 views
0

イメージを画面の上部から画面の下部に移動して、ピンのような効果を与えるようにしています。うまくいきますが、問題はアニメーション効果です。私はこれができるだけ滑らかになるようにしたいが、私はこの落としの効果でぎくしゃくを簡単に見つけることができる。onDrawの描画をスムーズにする方法

これを達成するために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); 

これは簡単なことのようですが、悪党があると私はこれらを回避するためのいくつかの方法を探していますジャーク

ありがとうございます。

+3

図面の見え方のコードを投稿してください。一般に、最後の更新からどれくらいの時間が経過したかをチェックし、オフセットを計算するのではなく、オフセットを計算する方がよい(1ピクセルなど)。こうすることで、図面が予想以上に長くても一貫した動きを得ることができます。 – Jave

+0

こんにちは、私はいくつかのコードスニペットで私のポストを更新しました。 – AndoAiron

+0

これはおかげで、あなたがやっていることを理解するのが少し楽になりました。また、 'onDraw()'メソッドの残りの部分を投稿してください。 – Jave

答えて

0

@Saurabh Pareek:ありがとうございました。

私はエミュレータで同じものをテストしていました。しかし、私はデバイス上で同じものを実行しようとしたとき、うまくいきました。いいえ、かわいいとかなりいいアニメーション。

関連する問題