2011-07-05 10 views
-1

私はキャンバスを持っています。私はキャンバスにsqureを持っています。image onDrawメソッドは、x軸のピクチャを先に進めるために実行可能に移動しません。

私はこのsqure x軸上で画像を動かしたいと思いますが、どのように変更されたかは安定しています。

public void onDraw(Canvas canvas) { 
      // TODO Auto-generated method stub 
      // Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.googlelogo320x480); 
      //   canvas.drawBitmap(myBitmap, 0, 0, null); 

      myPaint = new Paint(); 
      myPaint.setColor(Color.GREEN); 
      myPaint.setStyle(Paint.Style.STROKE); 

      myPaint.setStrokeWidth(3); 
      canvas1 = canvas; 
      canvas1.drawRect(80, 40, 570, 800, myPaint); 


      myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.horse); 
      canvas1.drawBitmap(myBitmap, i, 10, myPaint); 

      handler = new Handler(); 
      runnable = new Runnable() { 

       @Override 
       public void run() { 

        canvas1.drawBitmap(myBitmap, i, 10, myPaint); 
          System.out.println(i); 

         if(i<550){ 
         handler.postDelayed(this, 100); 
         i++; 
        } 
       } 
      }; 
      handler.postDelayed(runnable, 1000); 
     } 
    } 

私は事前に....キャンバス上

おかげで画像を移動するために何をすべきか。

答えて

0

onDraw OSが画面上に画像を描画するたびに呼び出されます。したがって、複数のループを実行して画面を描画する可能性があるため、実行可能なループは不要です。

これを試すことができます。ハンドラとループを削除します。代わりに、クラス内でiをプライベートにして、onDrawが呼び出されるたびに1ずつ増やしてください。最大値に達したらiをリセットしてください。方法の最後にinvalidate()に電話してください。これは、準備ができたらイメージを再度描画するようにOSに指示します。

関連する問題