An Android Widget for selecting items that rotate on a wheel.
An Android Widget for selecting items that rotate on a wheel.
CursorWheelLayout is an Android library that allows view to be placed on a rotatable wheel. It behaves like a Circular ListView where items rotate rather than scroll vertically(but without view recycle strategy).
CursorWheelLayout consists of two components , the center item with id id_wheel_menu_center_item and the menu items that provided by CycleWheelAdapter.
The CursorWheelLayout can be used as a way to select one item from a list. The wheelSelectedAngle attribute determines what position on the wheel is selected.
You can also receive a callback for when an item is clicked, and whether it is selected. Have a look at the sample for a working example!
compile 'github.hellocsl:CursorWheelLayout:1.1.0'
github.hellocsl
CursorWheelLayout
1.1.0
pom
WheelCycleAdapterpublic class SimpleTextAdapter implements CursorWheelLayout.CycleWheelAdapter{
public int getCount(){
//...
}
public View getView(View parent, int position){
//...
}
public Object getItem(int position){
//...
}
}
WheelCycleAdapter similar to how you would set an adapter with a ListView SimpleTextAdapter simpleTextAdapter = new SimpleTextAdapter(this, menuItemDatas);
mTestCircleMenuLeft.setAdapter(simpleTextAdapter);
SelectionAngle changes. mTestCircleMenuTop.setOnMenuSelectedListener(new CursorWheelLayout.OnMenuSelectedListener() {
@Override
public void onItemSelected(CursorWheelLayout parent, View view, int pos) {
Toast.makeText(MainActivity.this, "Top Menu selected position:" + pos, Toast.LENGTH_SHORT).show();
}
});
mTestCircleMenuTop.setOnMenuItemClickListener(new CursorWheelLayout.OnMenuItemClickListener() {
@Override
public void onItemClick(View view, int pos) {
Toast.makeText(MainActivity.this, "Top Menu click position:" + pos, Toast.LENGTH_SHORT).show();
}
});
Here are the custom attributes that can be declared in xml:
http://blog.csdn.net/lmj623565791/article/details/43131133
Apache License Version 2.0 http://apache.org/licenses/LICENSE-2.0.txt
No open issues yet, or sync has not completed.