CircleLayout
An Android layout for arranging children along a circle
Install / Use
/learn @francoiscampbell/CircleLayoutREADME
CircleLayout
An Android layout for arranging children along a circle
You can customize the following options:
cl_centerView: Set a specific view ID to be in the center of the circlecl_angle: Choose a specific angle between the children or arrange them equally (default: 0)cl_angleOffset: Start the circle at an offset in degrees relative to the horizontal axis (default: 0)cl_radius: Choose a specific radius for the circle or a preset.fitsSmallestChildandfitsLargestChildwill automatically pick a radius that will place either the smallest or the largest child view at the outer boundary (minus any padding) and layout the rest along the same radius (default:fitsLargestChild)cl_direction: EitherclockwiseorcounterClockwise(default:counterClockwise)
Installation
Standard installation via Gradle:
dependencies {
compile 'io.github.francoiscampbell:circlelayout:0.3.0'
}
Examples
Random widgets and a center view:

<?xml version="1.0" encoding="utf-8"?>
<io.github.francoiscampbell.circlelayout.CircleLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cl="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
cl:cl_angleOffset="90"
cl:cl_direction="clockwise"
cl:cl_centerView="@+id/centerView">
<Switch
android:id="@+id/centerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="12"
android:textColor="@color/testTextColor"
android:textSize="@dimen/clockTestSize" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:textColor="@color/testTextColor"
android:textSize="@dimen/clockTestSize" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:textColor="@color/testTextColor"
android:textSize="@dimen/clockTestSize" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:textColor="@color/testTextColor"
android:textSize="@dimen/clockTestSize" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</io.github.francoiscampbell.circlelayout.CircleLayout>
A very easy clock layout:

<?xml version="1.0" encoding="utf-8"?>
<io.github.francoiscampbell.circlelayout.CircleLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cl="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
cl:cl_angleOffset="90"
cl:cl_direction="clockwise">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="12"
android:textColor="@color/testTextColor"
android:textSize="@dimen/clockTestSize" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:textColor="@color/testTextColor"
android:textSize="@dimen/clockTestSize" />
...
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="11"
android:textColor="@color/testTextColor"
android:textSize="@dimen/clockTestSize" />
</io.github.francoiscampbell.circlelayout.CircleLayout>
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
