エルロ、親切な女性と優しい人。私はこの問題を抱えていて、助けていただければ幸いです。 基本的に私はいくつかの壁を描いて、それらをサーバーに送信しています、私が送信している2つのことがあります、そして、私はあなたのために、幅と高さ。幅または高さがwallThicknessは壁の方向に依存します(垂直の場合)。width = wallThickness、horizontal height = wallThickness。今度は別のアプリでRectのフォームでそれらの壁を描く必要があります。最初はビューの位置0,0から始まり、次の壁はすべて前の壁の端に取り付けて右の方向に移動します。 Rect(壁)が上から下、または左から右に描画されるときに問題はありません。 異なる方向の複数の長方形を描くアンドロイドの問題
私はこれらのRectの正しい始点を得ることができたからです。質問は、ボトムアップに、または次のように右から左に描画する必要があるRectsを描画する方法である:
これが最初のstartxとYであることを心に留めておくのRect でキャンバスを送り込む方法であり、 0,0は、我々は4つの壁を持っている場合、メソッドrecievesは、例えば、正しい順序である幅と高さは、それが1から答えを見つけ4.
public void drawWall (int width,int height,int wallListSize){
wall = new Rect();
wall.set(startX,startY,width+startX,height+startY);
wallList.add(wall);
Log.i(TAG, "drawWall: Rect bottom:"+wall.bottom+" right:"+wall.right+" top:"+wall.top+" left:"+wall.left);
//setting up starting position for next wall
if (chooseDirection(width)){
//vertical
if (wall.bottom>startY){
// up to down stroke
Log.i(TAG, "drawWall: up to down stroke");
startY = wall.bottom;
startX = wall.left;
}else {
//down to up stroke
Log.i(TAG, "drawWall: down to up stroke");
startY = wall.top;
startX = wall.right;
// startX = wall
}
}else {
//horizontal
if (wall.right>startX){
//left to right stroke
Log.i(TAG, "drawWall: left to right stroke");
startX = wall.right;
startY = wall.bottom;
}else {
//right to left stroke
Log.i(TAG, "drawWall: right to left stroke");
startX = wall.left;
startY = wall.top;
}
}
//Checking if there is more walls or not
Log.i(TAG, "drawWall: ---STARTING POSITION--- startX "+startX+" startY "+startY+" ");
if (wallIndex < wallListSize){
Log.i(TAG, "drawWall: incrementing index");
wallIndex++;
}else {
Log.i(TAG, "drawWall: end of drawing, matching layout to wrap content");
setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT));
}
}
private boolean chooseDirection(int width){
if (width == wallThickness){
return true;
}else {
return false;
}
}