画面の上部から画面の下部に到達するまで画像を移動して、ドロップピンのような効果を与えています。正常に動作していますが、問題はアニメーション効果にあります。これをできるだけスムーズにしたいのですが、このドロップ効果でジャークを簡単に見つけることができます。
これを実現するために、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);
これは単純なようですが、ジャークがあり、これらのジャークを回避するいくつかの方法を探しています。
前もって感謝します。