2011-07-05 1 views
-1

나는 캔버스를 가지고 있는데 캔버스에 squre가있다.image onDraw 메서드는 x 축의 pixes를 앞으로 나아가게 할 때 runnable에서 움직이지 않는다.

이 스퀘어 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가 준비가되었을 때 이미지를 다시 그릴 수 있습니다.

관련 문제