Рисование квадратного макета внутри круга

Я пытаюсь сделать относительный макет ограниченным в круге, то есть относительный макет должен быть как квадрат, показанный на рисунке ниже.

Я пытаюсь установить ширину и высоту макета как:

√((diameter)²/2) что составляет около 70%

Квадрат внутри круга http://www.yogaflavoredlife.com/wp-content/uploads/2010/09/square-circle.gif

 public class SquareLayout extends RelativeLayout { public SquareLayout(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int originalWidth = MeasureSpec.getSize(widthMeasureSpec); int originalHeight = MeasureSpec.getSize(heightMeasureSpec); int required = Math.min(originalWidth, originalHeight) * 7 / 10; super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(required, required); } } 

Я получаю прямоугольную компоновку вместо квадратной компоновки:

Может ли кто-нибудь вести меня туда, где я ошибаюсь?

Пример использования:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.widget.SquareLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F55C5C"> </com.example.widget.SquareLayout> </RelativeLayout> 

Solutions Collecting From Web of "Рисование квадратного макета внутри круга"

Вот как я получил решение. Сначала я создал квадратную рамку для хранения всех макетов.

 public class SquareFrame extends FrameLayout { public SquareFrame(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int originalWidth = MeasureSpec.getSize(widthMeasureSpec); int originalHeight = MeasureSpec.getSize(heightMeasureSpec); int required = Math.min(originalWidth, originalHeight); super.onMeasure( MeasureSpec.makeMeasureSpec(required, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(required, MeasureSpec.EXACTLY)); } } 

Затем вставили все макеты в этот квадратный фрейм.

 <com.example.widget.SquareFrame xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#5CF5FC"> <com.example.widget.SquareLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F55C5C"> </com.example.widget.SquareLayout> </com.example.widget.SquareFrame> 

Вот что я получил Квадрат, а не прямоугольник.