2012-01-27 16 views
1

私はレーザーカメラで探検した周囲の地図を描画するアンドロイドアプリを作成しています。私は、私がして、私が見てきた障害物のXYてきたところのXY座標を持って画像を動的に描画するための最良の方法


index x y 
path 0 0 0 
path 1 1 0 
path 2 2 0 

...etc 

obstacle 0 10 10 
obstacle 1 10 22 

..etc 

: は、私は次のようにすべての私のデータを電子テキストファイルを持っています。 テキストファイルからデータを読み込んでそのデータをlistに保存するthreadがあります。

threadはそのlistを読み取り、読み取りthreadすることにより、その瞬間までlistに置かれているすべての点を描画します。

私の問題は、読書threadが新しいデータをデータlistに入れたたびにすべてを再読み込みしたくないということです。ビットマップのようなものを描画し、これを動的に変更する方法がありますか?ビットマップを「開く」という新しいデータを読み込むたびに、新しいポイントを追加し、そのビットマップを「閉じる」ようにして画面に表示するということですか?私が今やっている何

は私onDraw()関数内のすべてのリストを読み、ポイントでポイントを描画することですが、私はポイントを持っているとするたびにポイントが古い位置にあるので、それが有用な作業です、私は新しいポイントしか持っていません...

答えて

0

ビットマップとキャンバスをビューに作成し、必要に応じてこのビットマップに引き続き描画します。ポイントが描画されるのを防ぐには、ポイントを描画するスレッドは、描画されたポイントをリストから削除するか、最後のポイントのインデックスを追跡する必要があります。それを描画するポイントの現在のリストを渡し、updateBitmapを呼び出してポイントを描画

public class myView extends View { 

    Bitmap mBitmap = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888); 
    Canvas mCanvas = new Canvas(mBitmap); 
    Paint mPaint = new Paint(); 

    public void updateBitmap(List<Point> points) { 
     while (!points.isEmpty()) { 
      int x = points.get(0).x; 
      int y = points.get(0).y; 
      mCanvas.drawPoint(x, y, mPaint); 
      points.remove(0); 
     } 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawBitmap(mBitmap, 0, 0, null); 
    } 
} 

スレッド:

はここで基本を含んでいる例です。これらの点はリストから削除され、後で再び描画されることはありません。

関連する問題