2011-08-05 39 views
1

我有一個類的面板覆蓋onDraw()方法如下。我有兩個圖像中提到的canvas.drawBitmap(),截至目前他們的立場是固定的。我可以在模擬器上將這兩個圖像從下到上移動嗎?代碼是:在我的Android應用程序中,我如何從他們的位置移動圖像?

class Panel extends View { 
    public Panel(Context context) { 
     super(context); 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     Bitmap image1 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre); 
     canvas.drawColor(Color.CYAN); 
     canvas.drawBitmap(Image1, 10, 10, null); 
     Bitmap Image2 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre); 
     canvas.drawBitmap(Image2, 100, 100, null); 

    } 
} 

回答

1

重寫這樣的代碼canvas.drawBitmap(Image1, x, y, null);

隨着時間的推移寫一個線程來更改xy的值。

一旦您更改了xy的值,請在您的Panel.java中調用invalidate來重新繪製視圖。

+0

如果你不介意的話,你可以請詳細說明與code.I徒勞 –

0

在onDraw中使用變量調用要繪製的x,y的值。我修改了代碼,在第一次繪製調用10秒後重繪自己到新座標。它會給你一個想法,在draw call中使用變量來動態地改變你繪製的地方。希望我已經回答了你的問題

class Panel extends View { 
    public Panel(Context context) { 
     super(context); 
    } 

    Handler handler = new Handler() { 
     public void handleMessage(Message msg) { 
      x1 = 20; 
      y1 = 20; 

      x2 = 120; 
      y2 = 120; 
      invalidate(); 
     } 
    } 
    private int x1 = 10; 
    private int y1 = 10; 

    private int x2 = 100; 
    private int y2 = 100; 
    private boolean drawAfterTenSecs = false; 


    @Override 
    public void onDraw(Canvas canvas) { 
     Bitmap image1 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre); 
     canvas.drawColor(Color.CYAN); 
     canvas.drawBitmap(Image1, x1, y1, null); 
     Bitmap Image2 = BitmapFactory.decodeResource(getResources(), R.drawable.btnpre); 
     canvas.drawBitmap(Image2, x2, y2, null); 
     if(!drawAfterTenSecs) { 
      handler.sendEmptyMessageDelayed (-1, 10000) 
      drawAfterTenSecs = true; 
     } 
    } 

} 
+0

試過我用你code.It工作正常,僅移動一步,即從最初的跳躍位置到最終位置。我希望他們能夠在所提及的位置之間不斷移動。你會怎麼做? –

+0

它取決於您的需要..我只是試圖展示如何控制變量....如果你想要一個連續的東西..你可以在handleMessage調用sendEmptyMessageDelayed? – Madhusudhan

相關問題