Android library which makes playing with sensor events & detecting gestures a breeze.

Overview

Sensey

Android library which makes playing with sensor events & detecting gestures a breeze.

The library is built for simplicity and ease of use. It eliminates most boilerplate code for dealing with setting up sensor based event and gesture detection on Android.


Built with ❤︎ by Nishant Srivastava and contributors


Screenshot of sample app

sc1 sc2

Supported gestures/events

Gesture Methods Usage
Flip onFaceUp
onFaceDown
Link
Light onDark
onLight
Link
Orientation onTopSideUp
onBottomSideUp
onLeftSideUp
onRightSideUp
Link
PinchScale onScale
onScaleStart
onScaleEnd
Link
Proximity onNear
onFar
Link
Shake onShakeDetected
onShakeStopped
Link
Wave onWave Link
Chop onChop Link
WristTwist onWristTwist Link
Movement onMovement
onStationary
Link
SoundLevel onSoundDetected Link
RotationAngle onRotation Link
TiltDirection onTiltInAxisX
onTiltInAxisY
onTiltInAxisZ
Link
Scoop onScooped Link
PickupDevice onDevicePickedUp
onDevicePutDown
Link
Steps stepInformation Link
TouchType onDoubleTap
onScroll(direction)
onSingleTap
onSwipeLeft
onSwipeRight
onLongPress
onTwoFingerSingleTap
onThreeFingerSingleTap
Link

Changelog

Starting with 1.0.1, Changes exist in the releases tab.

Including in your project

Sensey is available in the Jcenter, so getting it as simple as adding it as a dependency

implementation 'com.github.nisrulz:sensey:{latest version}'

where {latest version} corresponds to published version in Download

Simple example

  • To initialize Sensey under your onCreate() in the activity/service, call
Sensey.getInstance().init(context);
  • To stop Sensey, under your onDestroy() in the activity/service, call
 // *** IMPORTANT ***
 // Stop Sensey and release the context held by it
 Sensey.getInstance().stop();
  • Next to enable shake detection

    • Create an instance of ShakeListener
    ShakeDetector.ShakeListener shakeListener=new ShakeDetector.ShakeListener() {
        @Override public void onShakeDetected() {
           // Shake detected, do something
       }
    
       @Override public void onShakeStopped() {
           // Shake stopped, do something
       }
    };
    • Now to start listening for Shake gesture, pass the instance shakeListener to startShakeDetection() function
    Sensey.getInstance().startShakeDetection(shakeListener);

    If you want to modify the threshold and time before declaring that shake gesture is stopped, use

    Sensey.getInstance().startShakeDetection(threshold,timeBeforeDeclaringShakeStopped,shakeListener);
    • To stop listening for Shake gesture, pass the instance shakeListener to stopShakeDetection() function
    Sensey.getInstance().stopShakeDetection(shakeListener);

📃 For more info , check the Wiki Docs

Pull Requests

I welcome and encourage all pull requests. It usually will take me within 24-48 hours to respond to any issue or request. Here are some basic rules to follow to ensure timely addition of your request:

  1. Match coding style (braces, spacing, etc.) This is best achieved using CMD+Option+L (Reformat code) on Mac (not sure for Windows) with Android Studio defaults. This project uses a modified version of Grandcentrix's code style, so please use the same when editing this project.
  2. If its a feature, bugfix, or anything please only change code to what you specify.
  3. Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge :)
  4. Pull requests must be made against develop branch. Any other branch (unless specified by the maintainers) will get rejected.
  5. Check for existing issues first, before filing an issue.
  6. Have fun!

References of Sensey

Sensey is being used in production apps as well as research & development for thesis at universities.

Click here for the full list of references

License

Licensed under the Apache License, Version 2.0, click here for the full license.

Author & Contributors

This project was created by Nishant Srivastava but hopefully developed and maintained by many others. See the the list of contributors here.

Ways You Can Help/Support this project

Thanks for your interest in this software ❤️

Comments
  • New permission added: RECORD_AUDIO. Is it possible to remove it?

    New permission added: RECORD_AUDIO. Is it possible to remove it?

    I added this library to my project, and when trying to upload the apk to Google Play, I get the following warning: WARNING Users that have the APK with version code 10 may need to accept the android.permission.RECORD_AUDIO permission, which may result in them not upgrading to this version of the app.

    I assume this is for the "Sound Level Detection" and I see this permission is added to the library's AndroidManifest. Would it be possible to remove it? I think it's a better option that whoever needs this feature, adds this permission by himself/herself to avoid warnings even when not needed

    bug priority 
    opened by amanzan 9
  • Need a single event for Flip detection

    Need a single event for Flip detection

    I just saw your library, actually liked it and thought to give it a try.

    After attaching a flip detection listener in my activity, I see that the events are continuously getting fired. Like,

    private FlipDetector.FlipListener mFlipListener = new FlipDetector.FlipListener() {
            @Override
            public void onFaceUp() {
                // Device Facing up
                Timber.d("DEVICE UP");
            }
    
            @Override
            public void onFaceDown() {
                // Device Facing down
                Timber.d("DEVICE DOWN");
            }
        };
    

    in this code, I am getting continuous logs for "DEVICE UP" when the device is facing up and continuous logs for "FACE DOWN" when the device is facing down.

    But my requirement is something different. If the device is facing up, it should just give one single onFaceUp() callback, and if the device is facing down it should just give one single onFaceDown() callback.

    Is it possible with your library? If not, I will have to implement it myself. Just wanted to check if your library can do that or if you are willing to add it as an enhancement.

    enhancement 
    opened by aritraroy 5
  • Proximity detection of a specific distance

    Proximity detection of a specific distance

    In my use case I need to trigger a special event at a customizable distance. The onNear and onFar methods work incredibly good. But the distance, when these are triggers, is too low for my use case.

    There are 2 options I thought of.

    A onDistance method, which will be triggered at a specific distance, which was defined/ set before.

    No additional method, just changing the distance when onNear and onFar are triggered. This is actually my preferred option, since it keeps the behavior of the onNear and onFar methods but the trigger event can be placed at a specific distance. That would be pretty nice.

    In my use case, a distance of between (around) 4 -15 cm must be set. Though that distance must be set dynamically.

    I hope it's understandable. Thank you very much in advance. This library is really amazing - fantastic work!

    Edited my comment for a better tangibility.

    wontfix 
    opened by maxkeppeler 5
  • ShakeDetion should work in background

    ShakeDetion should work in background

    Do you want to request a feature or report a bug? Feature

    What is the current behavior? ShakeDetection is working when app is open. I want it even though app is killed.

    If the current behavior is a bug, please provide the steps to reproduce.

    Any logs, error output, bugreport etc?

    What is the expected behavior?

    Any other comments? Please help to work with Shake Sensor in Background too.

    What versions of software are you using?

    • Device Information: Samsund Galext J8

    • Android Version: Android 9.0

    opened by pratikbutani 4
  • "Swipe left"/"Swipe right" does not work correctly

    Tested sample app on Nexus 5, Android 6.0. Try to swipe to right, it shows "Swipe left" label. Moreover when try to swipe to top or bottom, it shows "swipe left".

    opened by programmerr47 4
  • Enable compatibility with emulator for running the sample app

    Enable compatibility with emulator for running the sample app

    As of now the sample app would not return any data when running on an emulator. This is because possibly the emulator does not support any sensor mocking.

    To do so a possible solution of interest I found over at this link.

    help wanted 
    opened by nisrulz 4
  • feature Update release version

    feature Update release version

    Thanks for the great work.

    I have noticed that the master branch is quite old compared to the development one. Is it possible to make some release upgrade?

    opened by Mir1001 3
  • App keeps crashing

    App keeps crashing

    My github rep- https://github.com/debmalya191/gestureapp

    I am making a simple app where on the shake gesture a new activity opens from the main activity but the app keeps crashing.

    Here is my logcat-

    dRuntime: FATAL EXCEPTION: main Process: com.example.mahe.gestureapp, PID: 28290 java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat' appears in /data/app/com.example.mahe.gestureapp-rPGMtdXCLHaxk64RVyNspA==/split_lib_dependencies_apk.apk) at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119) at android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) at android.support.v7.widget.AppCompatTextHelper.loadFromAttributes(AppCompatTextHelper.java:110) at android.support.v7.widget.AppCompatTextHelperV17.loadFromAttributes(AppCompatTextHelperV17.java:38) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:81) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:71) at android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:67) at android.support.v7.widget.Toolbar.setTitle(Toolbar.java:753) at android.support.v7.widget.ToolbarWidgetWrapper.setTitleInt(ToolbarWidgetWrapper.java:261) at android.support.v7.widget.ToolbarWidgetWrapper.setWindowTitle(ToolbarWidgetWrapper.java:243) at android.support.v7.widget.ActionBarOverlayLayout.setWindowTitle(ActionBarOverlayLayout.java:621) at android.support.v7.app.AppCompatDelegateImplV9.onTitleChanged(AppCompatDelegateImplV9.java:631) at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) at com.example.mahe.gestureapp.MainActivity.onCreate(MainActivity.java:15) at android.app.Activity.performCreate(Activity.java:6984) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1235) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2783) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2909) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1606) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6592) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)

    build.gradle-

    android { compileSdkVersion 27 buildToolsVersion '27.0.0' defaultConfig { applicationId "com.example.mahe.gestureapp" minSdkVersion 15 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    opened by debmalya191 2
  • Step Detection

    Step Detection

    Hi dear. I read in following link about step Detection, but it's not really in your library!! Did you removed this feature? https://github.com/nisrulz/sensey/wiki/Usage#steps --> here you talked about it.

    opened by javadVatan 2
  • Is it possible to create more than one Sensey instance in an activity listening on different views

    Is it possible to create more than one Sensey instance in an activity listening on different views

    It seems like only one instance of Sensey can be created per activity (or context to be precise). Is there any way to create and attach different Sensey listeners to more than one view in a single activity?

    question 
    opened by c0state 2
  • release remaining sensor detectors

    release remaining sensor detectors

    What does this implement/fix? Explain your changes This PR fixes possible leak that users may encounter if they don't stop their specific sensor detectors. For ex. in this scenario:

    class ShakeActivity : AppCompatActivity(), ShakeDetector.ShakeListener {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_shake)
    
            Sensey.getInstance().init(this)
            Sensey.getInstance().startShakeDetection(this)
        }
    
        override fun onShakeStopped() {
            tvStatus.text = "Shake: Stopped"
        }
    
        override fun onShakeDetected() {
            tvStatus.text = "Shake: Detected"
            // this will show "Shake" even if this ShakeActivity destroyed
            Toast.makeText(this, "Shake", Toast.LENGTH_SHORT).show()
        }
    
        override fun onDestroy() {
            Sensey.getInstance().stop()
            super.onDestroy()
        }
    }
    

    As you can see above, in onDestroy() of ShakeActivity, I omitted stopShakeDetection(this) since I was expecting Sensey.getInstance().stop() should stop all the registered sensor detectors (maybe, others are doing this too). If you leave ShakeActivity in the above example and shake, toast "Shake" still appear because Sensey is still holding a reference to it

    Does this close any currently open issues? I am not sure if this solves #26, as far as I understood it is similar to my case (the above example)

    Any relevant logs, error output, bugreport etc? I tested it locally, LeakCanary shows "ShakeActivity leaked 45Kb" on my device.

    opened by azizkayumov 1
  • Migrate to Maven Central

    Migrate to Maven Central

    JFrog just announced that they'll be shutting down JCenter: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

    Key dates are:

    February 28th: No more submissions will be accepted to Bintray, JCenter May 1st: Bintray, JCenter services will no longer be available

    Hence need to migrate to another maven repository like Maven central.

    opened by nisrulz 0
  • Step Detection Not Working

    Step Detection Not Working

    Hi, Thank you so much for this library. Although Step Detection is Not Working. I'm not sure if I'm doing something wrong.

    Below is the code:

      private val stepListener =
            StepListener { noOfSteps, distanceInMeter, stepActivityType ->
            Log.d(TAG,"$noOfSteps ")
    }
    
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         Sensey.getInstance().startStepDetection(this, stepListener, StepDetectorUtil.MALE)
    }
    
    • Device Information: : OnePlus 6T

    • Android Version: 10

    opened by ashu-knock 1
  • MotionEvent object in callback of gesture/tap detection

    MotionEvent object in callback of gesture/tap detection

    Hii thank you so much for such a wonderful library 🔆 I'm using some other library to detect a global touch in my app due to some personal reasons. Which detects touch anywhere in the apo. When there's any touch action I get a callback with motion event. which I can pass to Sensey touchDispatcher. Actually, I've some specific requirements. When there's any callback on gesture detection, say Swipe detection callback. I want MotionEvent object as well, to detect where the event happened. Because now touches are global in the app. I actually don't know on what view or where touch happened. As Sensey currently doesn't provide MotionEvent in callback of detection.

    So can we have MotionEvent object in some overridden method? Or how can I get that?

    opened by jayesh83 7
  • 📖 Guest Book 🙇🏻‍♂️

    📖 Guest Book 🙇🏻‍♂️

    This "issue" serves as a guest book. You're welcome to write nice things about Sensey, share how it's helped you out, or name drop companies using it.

    P.S: If you have a question/suggestion please open a separate issue 👨🏻‍💻

    Idea came from this tweet

    opened by nisrulz 0
  • Please Solute this bug error

    Please Solute this bug error

    java.lang.NullPointerException: Attempt to invoke virtual method 'float android.view.MotionEvent.getX()' on a null object reference at android.view.View.onTouchEvent(View.java:13738) at android.support.design.widget.CoordinatorLayout.onTouchEvent(CoordinatorLayout.java:449) at android.view.View.dispatchTouchEvent(View.java:12527) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3026) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2705) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3032) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:444) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1830) at android.app.Activity.dispatchTouchEvent(Activity.java:3465) at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59) at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:402) at android.view.View.dispatchPointerEvent(View.java:12768) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5218) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5018) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4533) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4586) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4552) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4692) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4560) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4749) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4533) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4586) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4552) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4560) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4533) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7251) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7220) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7181) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7357) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:247) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:326) at android.os.Looper.loop(Looper.java:165) at android.app.ActivityThread.main(ActivityThread.java:6810) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

    opened by Thihazawzaw 0
  • is:issue is:open (Question) Is there any long press release listener?

    is:issue is:open (Question) Is there any long press release listener?

    Do you want to request a feature or report a bug?

    What is the current behavior?

    If the current behavior is a bug, please provide the steps to reproduce.

    Any logs, error output, bugreport etc?

    What is the expected behavior?

    Any other comments?

    What versions of software are you using?

    • Device Information:

    • Android Version:

    • Configuration Information:

    • Misc:

    opened by soumenadhikari 0
Releases(1.9.0)
  • 1.9.0(Dec 11, 2020)

    Including in your project 👨🏻‍💻

    implementation 'com.github.nisrulz:sensey:1.9.0'
    

    Changelog 📝

    • Added new detectors:
      • Scoop
      • PickupDevice
      • Steps
    • Updated dependencies(Got rid of support libs and android kotlin extensions)
    • Code cleaned up and refactored
    Source code(tar.gz)
    Source code(zip)
  • 1.8.0(Dec 5, 2017)

    Including in your project

    implementation 'com.github.nisrulz:sensey:1.8.0'
    

    Changelog

    • Removed RECORD_AUDIO permission out of the library

      When using SoundLevel Detector, you need to add RECORD_AUDIO permission to your AndroidManifest.xml manually as well as handle Runtime Permission

    • Removed support for devices below API 14
    • Updated dependencies
    • Code cleaned up and refactored
    Source code(tar.gz)
    Source code(zip)
  • 1.7.0(Mar 12, 2017)

    Including in your project

    compile 'com.github.nisrulz:sensey:1.7.0'
    

    Changelog

    • Added RotationAngleDetector and TiltDirectionDetector
    • Code cleaned up and refactored
    Source code(tar.gz)
    Source code(zip)
  • 1.6.1(Feb 28, 2017)

    Including in your project

    compile 'com.github.nisrulz:sensey:1.6.1'
    

    Changelog

    • Fixed the persistent memory leak issue
    • Made certain gestures emit only specific events instead of a stream of events
    • Code cleaned up and refactored
    • Updated dependencies
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Feb 13, 2017)

    Including in your project

    compile 'com.github.nisrulz:sensey:1.6.0'
    

    Changelog

    • added Chop, Wrist Twist, Movement and Sound Level Detectors
    • code cleaned up and refactored
    • fixed a memory leak issue
    • added stop shake detection function to listener
    • updated dependencies
    Source code(tar.gz)
    Source code(zip)
  • 1.5.1(Oct 22, 2016)

  • 1.5.0(Oct 15, 2016)

  • 1.4.1(Sep 4, 2016)

  • 1.4.0(Jul 6, 2016)

    Changelog

    • Updated code to better handle register and unregister of listeners
    • Added detection of PinchScale, TwoFingerTap and ThreeFingerTap
    • Bug fixes
    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Jun 24, 2016)

  • 1.2.0(Jun 14, 2016)

    Changelog

    • updated code to remove deprecated implementation of getOrientation with an updated version
    • opened up api to modify threshold values for shake detector and light detector
    • code cleanup
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Jun 5, 2016)

  • 1.0.1(Jun 1, 2016)

Owner
Nishant Srivastava
Software Engineer 👨🏻‍💻
Nishant Srivastava
Android library for swipable gestures

Swipper Android Library for custom views to control brightness , volume and seek through swipable gestures . These views could easily replace the conv

Mobile Development Group 105 Dec 30, 2022
Smoothen rx value streams for e.g. sensor data using kalman filter.

KalmanRx Introduction Removes the noise from float streams using Kalman Filter. Useful to smoothen sensory data e.g.: gps location, or Accelerometer.

Jan Rabe 98 Nov 23, 2022
A simple and customizable Android full-screen image viewer with shared image transition support, "pinch to zoom" and "swipe to dismiss" gestures

Stfalcon ImageViewer A simple and customizable full-screen image viewer with shared image transition support, "pinch to zoom" and "swipe to dismiss" g

Stfalcon LLC 1.9k Jan 5, 2023
[] An Android library which allows developers to easily add animations to ListView items

DEPRECATED ListViewAnimations is deprecated in favor of new RecyclerView solutions. No new development will be taking place, but the existing versions

Niek Haarman 5.6k Dec 30, 2022
An Android library which provides simple Item animations to RecyclerView items

RecyclerViewItemAnimators Library Travis master: This repo provides: Appearance animations Simple animators for the item views Quick start You can now

Gabriele Mariotti 3.1k Dec 16, 2022
Road Runner is a library for android which allow you to make your own loading animation using a SVG image

Road Runner Road Runner is a library for android which allow you to make your own loading animation using a SVG image Sample video View in Youtube Dem

Adrián Lomas 1.2k Nov 18, 2022
Android library which allows you to swipe down from an activity to close it.

Android Sliding Activity Library Easily create activities that can slide vertically on the screen and fit well into the Material Design age. Features

Jake Klinker 1.3k Nov 25, 2022
FragmentTransactionExtended is a library which provide us a set of custom animations between fragments.

FragmentTransactionExtended FragmentTransactionExtended is a library which provide us a set of custom animations between fragments. FragmentTransactio

Antonio Corrales 1.1k Dec 29, 2022
FadingToolbar is an animation library which fades out your footer view in a ScrollView/RecyclerView and fades in a toolbar title

FadingToolbar is an animation library which fades out your footer view in a ScrollView/RecyclerView and fades in a toolbar title (analogue of the LargeTitle animation in iOS)

Hanna 9 Nov 3, 2022
A component for flip animation on Android, which is similar to the effect in Flipboard iPhone/Android

android-flip Aphid FlipView is a UI component to accomplish the flipping animation like Flipboard does. A pre-built demo APK file for Android OS 2.2+

Bo 2.8k Dec 21, 2022
Simple tool which help you to implement activity and fragment transition for pre-Lollipop devices.

PreLollipopTransition Simple tool which help you to implement activity and fragment transition for pre-Lollipop devices. Download In your app build.gr

Takahiro Menju 1.3k Nov 28, 2022
💳 A quick and easy flip view through which you can create views with two sides like credit cards, poker cards etc.

The article on how this library was created is now published. You can read it on this link here. →. ?? EasyFlipView Built with ❤︎ by Wajahat Karim and

Wajahat Karim 1.3k Dec 14, 2022
It's a cool animation which can use in splash or somewhere else.

What's Particle ? It's a cool animation which can use in splash or anywhere else. Demo Article 手摸手教你用Canvas实现简单粒子动画 Attributes name format description

巴掌 1.4k Dec 12, 2022
Trying to play with Jetpack compose low level animations APIs, which are animate*AsState APIs.

ComposeSimpleAnimation Trying to play with Jetpack compose low level animations APIs, which are animate*AsState APIs that I needed in another project.

Mustafa Ibrahim 39 Dec 10, 2022
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 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. Th

Enrique López Mañas 3.6k Dec 29, 2022
Postman is a reactive One-tap SMS verification library. This library allows the usage of RxJava with The SMS User Consent API

What is Postman? Postman is a reactive One-tap SMS verification library. This library allows the usage of RxJava with The SMS User Consent API Usage P

Cafer Mert Ceyhan 129 Dec 24, 2022
Android Country Picker is a Kotlin-first, flexible and powerful Android library that allows to integrate Country Picker with just a few lines.

1. Add dependency dependencies { implementation 'com.hbb20:android-country-picker:X.Y.Z' } For latest version, 2. Decide your use-case

Harsh B. Bhakta 65 Dec 6, 2022
Android Library that lights items for tutorials or walk-throughs etc...

Spotlight Gradle dependencies { implementation 'com.github.takusemba:spotlight:x.x.x' } Usage val spotlight = Spotlight.Builder(this) .setTarg

TakuSemba 3.4k Jan 4, 2023
Android Rubber Picker Library

RubberPicker RubberPicker library contains the RubberSeekBar and RubberRangePicker, inspired by Cuberto's rubber-range-picker. Getting started Setting

Chrisvin Jem 547 Jan 5, 2023