WheelView alternatives and similar packages
Based on the "Other Widget" category.
Alternatively, view WheelView alternatives based on common mentions on social networks and blogs.
-
AndroidSlidingUpPanel
This library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application. Brought to you by Umano. -
BottomBar
(Deprecated) A custom view component that mimics the new Material Design Bottom Navigation pattern. -
ShortcutBadger
An Android library supports badge notification like iOS in Samsung, LG, Sony and HTC launchers. -
Litho (By Facebook)
A declarative framework for building efficient UIs on Android. -
SystemBarTint
[DEPRECATED] Apply background tinting to the Android system UI when using KitKat translucent modes -
DragSortListView
Android ListView with drag and drop reordering. -
TapTargetView
An implementation of tap targets from the Material Design guidelines for feature discovery. -
android-viewbadger
[DEPRECATED] A simple way to "badge" any given Android view at runtime without having to cater for it in layout -
AndroidViewHover
An elegant way to show your menu or messages. -
android-stackblur
Android StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. The library is based on the code of Mario Klingemann. -
android-pdfview
[DEPRECATED] A fast PDF reader component for Android development -
android-iconify
Android integration of multiple icon providers such as FontAwesome, Entypo, Typicons,... -
DraggablePanel
Android library used to create an awesome Android UI based on a draggable element similar to the last YouTube graphic component. -
android-pathview
Android view with both path from constructed path or from svg. -
AndroidTreeView
AndroidTreeView. TreeView implementation for android -
aFileChooser
[DEPRECATED] Android library that provides a file explorer to let users select files on external storage. -
Swipecards
A Tinder-like Android library to create the swipe cards effect. You can swipe left or right to like or dislike the content. -
TourGuide
TourGuide is an Android library that aims to provide an easy way to add pointers with animations over a desired Android View -
android-viewflow
A horizontal view scroller library for Android -
MaterialIntroScreen
Inspired by Heinrich Reimer Material Intro and developed with love from scratch -
Flow
Name UI states, navigate between them, remember where you've been. -
MultiSnapRecyclerView
Android library for multiple snapping of RecyclerView -
chromeview
Android WebView implementation that uses the latest Chromium code -
android-segmented-control
ios UISegmentedControl for android -
StickyGridHeaders
An Android Library that makes it easy to make grid views with sectioned data and headers that stick to the top. -
HoloColorPicker
An Android Holo themed colorpicker designed by Marie Schweiz -
FloatingView
FloatingView can make the target view floating above the anchor view with cool animation -
TileView
TileView is a subclass of android.view.ViewGroup that asynchronously displays, pans and zooms tile-based images. Plugins are available for features like markers, hotspots, and path drawing. -
Android-SwipeToDismiss
Android swipe-to-dismiss mini-library and sample code -
StandOut
StandOut lets you easily create floating windows in your Android app. -
Bubbles for Android
Bubbles for Android is an Android library to provide chat heads capabilities on your apps. With a fast way to integrate with your development. -
Flashbar
⚡️A highly customizable, powerful and easy-to-use alerting library for Android. -
FancyCoverFlow
A cool Open Source CoverFlow view for Android with several fancy effects. -
Emoji
A library to add Emoji support to your Android / JVM Application -
SwipeStack
A simple, customizable and easy to use swipeable view stack for Android. -
RippleView
View that imitates Ripple Effect on click which was introduced in Android L (for Android 2.3+) -
Android-ActionItemBadge
This library offers a simple method to add a small badge icon to your ActionBar-MenuItem -
android-sliding-layer-lib
Highly customizable SlidingLayer as you have seen in Wunderlist -
SortableTableView
An Android library containing a simple TableView and an advanced SortableTableView providing a lot of customisation possibilities to fit all needs. -
android-uitableview
Library and example project on how to use the UITableView component -
ScratchView
ScratchView repo is UX Design involving scratch cards like views which are scratched to reveal the information they conceal.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of WheelView or a related project?
README
Looking for maintainers
I'm no longer active on this project but I'll still focus on fixing crashing issues and review any code changes etc.
WheelView
WheelView is an Android library that allows drawables to be placed on a rotatable wheel. It behaves like a Circular ListView where items rotate rather than scroll vertically. It isn't limited by the number of items that can fit on the wheel since it will cycle through each adapter position when the wheel is rotated. It can be rotated at any angle and from any position.
The WheelView can be used as a way to select one item from a list. The SelectionAngle
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!
[1] [2]
Note - Frame rate is much better than these poorly converted gifs!
Setup
Include this in build.gradle project dependencies:
dependencies {
compile 'com.github.lukedeighton:wheelview:0.4.2'
}
Usage
1) Add a custom view in xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.lukedeighton.wheelview.WheelView
android:id="@+id/wheelview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:wheelColor="@color/grey_400"
app:rotatableWheelDrawable="false"
app:selectionAngle="90.0"
app:wheelPosition="bottom"
app:wheelOffsetY="60dp"
app:repeatItems="true"
app:wheelRadius="276dp"
app:wheelItemCount="14"
app:wheelPadding="13dp"
app:wheelItemRadius="43dp"/>
</RelativeLayout>
2) Set a WheelAdapter
similar to how you would set an adapter with a ListView
wheelView.setAdapter(new WheelAdapter() {
@Override
public Drawable getDrawable(int position) {
//return drawable here - the position can be seen in the gifs above
}
@Override
public int getCount() {
//return the count
}
});
Please note that the WheelAdapter
doesn't behave exactly like a ListAdapter
since Drawables don't need to be recycled in comparison to Views where inflation is expensive. If you need to refresh the Adapter / Items then call setAdapter
again.
Listeners
1) A listener for when the closest item to the SelectionAngle
changes.
wheelView.setOnWheelItemSelectedListener(new WheelView.OnWheelItemSelectListener() {
@Override
public void onWheelItemSelected(WheelView parent, Drawable itemDrawable, int position) {
//the adapter position that is closest to the selection angle and it's drawable
}
});
2) A listener for when an item is clicked.
wheelView.setOnWheelItemClickListener(new WheelView.OnWheelItemClickListener() {
@Override
public void onWheelItemClick(WheelView parent, int position, boolean isSelected) {
//the position in the adapter and whether it is closest to the selection angle
}
});
3) A listener for when the wheel's angle is changed.
wheelView.setOnWheelAngleChangeListener(new WheelView.OnWheelAngleChangeListener() {
@Override
public void onWheelAngleChange(float angle) {
//the new angle of the wheel
}
});
Attributes
The WheelView is highly customisable with many attributes that can be set via xml or programmatically (recommend using xml as programmatically set attributes is half implemented at the moment). Here are the custom attributes that can be declared in xml:
- wheelDrawable
- wheelColor
- emptyItemDrawable
- emptyItemColor
- selectionDrawable
- selectionColor
- selectionPadding
- selectionAngle
- repeatItems
- wheelRadius
- wheelItemRadius
- rotatableWheelDrawable
- wheelOffsetX
- wheelOffsetY
- wheelItemCount
- wheelItemAngle
- wheelToItemDistance
- wheelPosition
- wheelPadding
- wheelItemTransformer
- selectionTransformer
WheelItemTransformer
Determines the draw bounds of the WheelItem
in relation to the selection angle.
SimpleItemTransformer
- All items are the same sizeScalingItemTransformer
- Items grow in size near to the selection angle
Future Goals
Convert this project to use LayoutManager
to replace Drawables with Views
License
Apache License Version 2.0 http://apache.org/licenses/LICENSE-2.0.txt
*Note that all licence references and agreements mentioned in the WheelView README section above
are relevant to that project's source code only.