2015-05-12 34 views
1

我畫了一個正方形,但是我怎樣才能在旁邊放置另一個沒有任何間隙的形狀?我相信mRedRect1F中的第一個參數(0)需要改變,但我不知道該怎麼辦。在另一個旁邊畫一個形狀

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    mRedRect0F = new RectF(0, 0, 50, 50); 
    mRedRect1F = new RectF(0, 0, 50, 50); 

    canvas.drawRect(mRedRect0F, mRedRectPaint); 
    canvas.drawRect(mRedRect1F, mRedRectPaint); 

} 

更新

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    mRedRect0F = new RectF(0, 0, 20, measuredHeight); 
    mRedRect1F = new RectF(getWidth() - 20, 0, getWidth(), getHeight()); 

    canvas.drawRect(mRedRect0F, mRedRectPaint); 
    canvas.drawRect(mRedRect1F, mRedRectPaint); 
} 

回答

1

有3種方式,你可以做到這一點從我的頭頂。

第一個是將第二個RecfF定義爲距右邊50個像素。

new RectF(50, 0, 100, 50); 

下一步是在繪製第二個畫布之前翻譯畫布。

mRedRect = new RectF(0, 0, 50, 50); 
canvas.drawRect(mRedRect, mRedRectPaint); 
canvas.translate(50, 0); 
canvas.drawRect(mRedRect, mRedRectPaint); 

而第三個是在繪圖之前抵消RectF。

mRedRect = new RectF(0, 0, 50, 50); 
canvas.drawRect(mRedRect, mRedRectPaint); 
mRedRect.offset(50, 0); 
canvas.drawRect(mRedRect, mRedRectPaint); 
+0

我不想使用數字。是否有可能有類似'android:layout_toRightOf(mRedRect0F)'? – MacaronLover

+0

並非如此,如果您想使用佈局,請使用佈局。 – alex

+0

你知道一個合適的解決方案來解決[這個其他問題以編程方式(在Java中使用canvas而不是XML)](http://stackoverflow.com/questions/32037260/how-to-add-rectangles-on-top-of-現有的矩形,在畫布)?我花了幾個月的時間試圖解決這個問題,但沒有運氣,所給出的答案也沒有解決問題。 – MacaronLover

1

您可以創建一個toRightOf方法。肯定會有更多的工作,但如果你再次需要做這樣的事情,那麼你已經有方法來寫它了。我現在不在電腦上,或者我會試試看。如果你不希望這樣做,我會使用第一個答案中發佈的選項之一。