ProSwipeButton
A swipe button for Android with a circular progress bar for async operations.
Gradle
dependencies {
...
compile 'in.shadowfax:proswipebutton:1.1'
}
Usage
- In your XML layout file, add this custom view
<in.shadowfax.proswipebutton.ProSwipeButton
android:id="@+id/awesome_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:bg_color="@android:color/holo_blue_dark"
app:btn_text="Place Order" />
- React to successful swipe on the button by adding a swipe listener
ProSwipeButton proSwipeBtn = (ProSwipeButton) findViewById(R.id.awesome_btn);
proSwipeBtn.setOnSwipeListener(new ProSwipeButton.OnSwipeListener() {
@Override
public void onSwipeConfirm() {
// user has swiped the btn. Perform your async operation now
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// task success! show TICK icon in ProSwipeButton
proSwipeBtn.showResultIcon(true); // false if task failed
}
}, 2000);
}
});
- After the async task is completed, tell the ProSwipeButton to show a result icon.
Either a tick for a successful async operation or cross for a failed async operation.
proSwipeBtn.showResultIcon(true); //if task succeeds
proSwipeBtn.showResultIcon(false); //if task fails
Customizations
You can customize the button via XML or programatically.
<in.shadowfax.proswipebutton.ProSwipeButton
android:id="@+id/proswipebutton_main_error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:arrow_color="#33FFFFFF"
app:bg_color="@android:color/holo_blue_dark"
app:btn_radius="2dp"
app:btn_text="Place Order"
app:text_color="@android:color/white"
app:text_size="12sp" />
New: set distance the user must swipe to activate the button.
proswipebutton.setSwipeDistance(0.6f);
Feel free to raise feature requests via the issue tracker for more customizations or just send in a PR :)
Sample
Clone the repository and check out the app
module.