A set of widgets to create smooth slideshows with ease.

Overview

Android SlideShow Widget

A set of widgets to create smooth slide shows with ease. The slide show components are fully customizable and are not limited to pictures, you can slide whatever you want to (texts, etc.).

Demo

A demo of the widget is worth a thousand words. You can download it for free on Google Play.

Demo on Google Play

Usage

Including the library

The easiest way to get the library included in your project is by using Gradle. Simply add the following line to your dependencies block:

dependencies {
    compile 'com.marvinlabs:android-slideshow-widget:0.4.+@aar'
}

Of course, you can replace the version number by whichever version you need (you can have a look at this repository's tags to know which is the latest).

Getting a slide show in your fragment/activity

To include a slide show in your layout, simply use the following XML code snippet:

<com.marvinlabs.widget.slideshow.SlideShowView
    android:id="@+id/slideshow"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

You can then get the SlideShowView using the usual technique:

slideShowView = (SlideShowView) findViewById(R.id.slideshow);

The next step is to create the adapter that will bind your slide data to actual views. This is a process very similar to what you do when working with the ListView widget. In this library, we have a few base adapters to help you create picture slide shows easily from images in your application resources or from images on the Internet. The code would look like that:

adapter = new ResourceBitmapAdapter(this, new int[]{
    R.raw.slide_01, R.raw.slide_02, R.raw.slide_03, R.raw.slide_04});

Once your activity is ready, or inside an event handler like a button click method, you can then start the slideshow:

slideShowView.play();

Customisable components

SlideShowAdapter

This is the key component to bind your slide data with actual view widgets. Have you heard about ListView and Adapter? Well, this is exactly the same concept.

To get you started with picture slide shows, we have created a few useful adapters:

  • ResourceBitmapAdapter will allow you to show a list of application resource drawables
  • RemoteBitmapAdapter will allow you to show a list of images that are loaded from the Internet.

We also have a Picasso plugin library. That provides an adapter that works with Picasso instead of AsyncTasks. To use it, simply add the corresponding dependency using gradle:

dependencies {
    compile 'com.marvinlabs:android-slideshow-widget-picasso-plugin:0.4.+@aar'
}

SlideTransitionFactory

You want something else than just a fade between slides? Simply implement this interface to return whichever view animator you want.

To make it easy for you, we already have a few default implementations that should cover most of your needs:

  • FadeTransitionFactory if you want your slides to fade out and in
  • SlideAndZoomTransitionFactory if you want your slides to slide ou left and then zoom in
  • NoTransitionFactory if you want your slides to brutally show up

PlayList

You want to change the order of your slides? You need your slides to have a variable duration? Well, that's the interface to implement to change that.

To make it easy for you, we already have a few default implementations that should cover most of your needs:

  • SequentialPlayList will play slides in order with a common default duration
  • RandomPlayList will play slides in a random order with a common default duration

About Vincent & MarvinLabs

I am a freelance developer located in Biarritz, France. You can have a look at my website to get to know me a little better. If you want to follow me, here are some links:

MarvinLabs is my digital studio specialised in native mobile applications and web sites. You can browse our website to get to know us a little better. If you want to get updates about our work, you can also:

Change log

0.5.0 (2014-06-03)

  • [new] making the adapters more generic so that they can easily be used with existing data
  • [new] added a Picasso plugin (an adapter to use Picasso to load remote images)

0.3.0 (2014-06-02)

  • [new] new transition factories
  • [new] playback control function (next, previous, pause, resume)
  • [new] widget can be configured from XML
  • [fix] issue #2

0.2.0 (2014-06-01)

  • [new] a RandomPlayList implementation
  • [new] listener for slide show events
  • [new] listener for slide click event (similar to ListView's item click listener) (Thanks Arasthel)
  • [fix] Some additional inline documentation

0.1.0 (2014-05-31)

  • First release (beta)
  • SlideShowView widget to play a slide show
  • SlideTransitionFactory to customize the transitions between slides (with 2 default implementations)
  • PlayList to customize the order and duration of slides (with 1 default implementations)
  • SlideShowAdapter to bind slide data to actual view widgets (with 2 default implementations)
  • Demo application
Comments
  • Quick fix for issue #1

    Quick fix for issue #1

    Fixes issue #1 but maybe in a dirty way. The app won't crash anymore and the logs show that the right slides are being shown, but I can't confirm the UI is behaving that way.

    opened by jmartinesp 2
  • Library won't build unless you have the right signing configuration

    Library won't build unless you have the right signing configuration

    I've had a really difficult time while trying to compile the library as I had to delete most of the build.gradle code referencing signing.

    Please make it optional or include all files so anyone can submit pull requests without going crazy.

    opened by jmartinesp 1
  • java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@b3eec578

    java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@b3eec578

    Bellow is my code: slideShowView = (SlideShowView) findViewById(R.id.slideshow); //set slide show adapter ResourceBitmapAdapter adapter = new ResourceBitmapAdapter(getActivity(), new int[]{ R.drawable.profile,R.drawable.profile2 }); slideShowView.setAdapter(adapter);

    The first image is displayed well, but when slider start to display second image this error occur.

    opened by ahmad-shawky 0
  • Make some settings available from XML

    Make some settings available from XML

    We should be able to set a few common settings from XML:

    • slide duration (ms)
    • transition type (fade, zoom, ...)
    • playlist type (sequence, shuffle)
    • transition duration (ms)
    • autoplay (true|false)
    • etc.
    enhancement 
    opened by vpratfr 0
  • Inflation issue

    Inflation issue

    Hi.

    I added the dependency for the library and everything synced fine. But as soon as i ran the application, i got an exception (just added the widget in xml and nothing in the code). The trace is as follows:

    02-26 15:31:37.911 11421-11421/com.video.ccolutions.videoeditor W/System.err: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class com.marvinlabs.widget.slideshow.SlideShowView 02-26 15:31:37.918 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:561) 02-26 15:31:37.918 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:437) 02-26 15:31:37.918 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 02-26 15:31:37.918 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 02-26 15:31:37.918 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 02-26 15:31:37.918 11421-11421/com.video.ccolutions.videoeditor W/System.err: at com.video.ccolutions.videoeditor.SlideshowCreation.onCreate(SlideshowCreation.java:58) 02-26 15:31:37.918 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.app.Activity.performCreate(Activity.java:6372) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2432) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2539) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.app.ActivityThread.access$900(ActivityThread.java:168) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.os.Looper.loop(Looper.java:150) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5659) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at java.lang.reflect.Method.invoke(Native Method) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:822) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class com.marvinlabs.widget.slideshow.SlideShowView 02-26 15:31:37.919 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:672) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:791) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:731) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.rInflate(LayoutInflater.java:862) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:825) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.rInflate(LayoutInflater.java:865) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:825) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.rInflate(LayoutInflater.java:865) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:825) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:537) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: ... 17 more 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: Caused by: java.lang.reflect.InvocationTargetException 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at java.lang.reflect.Constructor.newInstance(Native Method) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:641) 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: ... 26 more 02-26 15:31:37.920 11421-11421/com.video.ccolutions.videoeditor W/System.err: Caused by: java.lang.ClassCastException: android.graphics.drawable.RippleDrawable cannot be cast to android.graphics.drawable.StateListDrawable 02-26 15:31:37.921 11421-11421/com.video.ccolutions.videoeditor W/System.err: at com.marvinlabs.widget.slideshow.SlideShowView.readAttributeSet(SlideShowView.java:159) 02-26 15:31:37.921 11421-11421/com.video.ccolutions.videoeditor W/System.err: at com.marvinlabs.widget.slideshow.SlideShowView.(SlideShowView.java:144) 02-26 15:31:37.921 11421-11421/com.video.ccolutions.videoeditor W/System.err: at com.marvinlabs.widget.slideshow.SlideShowView.(SlideShowView.java:138) 02-26 15:31:37.921 11421-11421/com.video.ccolutions.videoeditor W/System.err: ... 28 more

    I have no idea why this is happened so need all the help i can get.

    Thanks.

    opened by maazasif 2
  • Update adapter

    Update adapter

    How can you add more slides to the adapter? Seems that in the constructor, it creates another new ArrayList(slideUrls) so if you update the original slideUrls list, there is no way to notify the adapter that the dataSet has changed

    opened by c-z-r 1
  • SlideShowView with 1 Drawable

    SlideShowView with 1 Drawable

    In some cases, I need to display only 1 drawable in my SlideShowView.

    How can I disable the default transition effect (quick dim) that reloads the same image after a default interval of time ?

    Thank you for your work and quick response,

    Best, Jad

    opened by jadkachmar 1
  • ClasscastException

    ClasscastException

    I am getting the following error message while i try to run the code

    Process: com.iamnbty.movingtoolbar, PID: 21178 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.iamnbty.movingtoolbar/com.iamnbty.movingtoolbar.SlideShowActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.marvinlabs.widget.slideshow.SlideShowView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.marvinlabs.widget.slideshow.SlideShowView at android.view.LayoutInflater.createView(LayoutInflater.java:633) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at android.view.LayoutInflater.inflate(LayoutInflater.java:365) at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378) at android.app.Activity.setContentView(Activity.java:2145) at com.iamnbty.movingtoolbar.SlideShowActivity.onCreate(SlideShowActivity.java:34) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)             at android.app.ActivityThread.access$800(ActivityThread.java:151)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5254)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:288) at android.view.LayoutInflater.createView(LayoutInflater.java:607)             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)             at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)             at android.view.LayoutInflater.inflate(LayoutInflater.java:504)             at android.view.LayoutInflater.inflate(LayoutInflater.java:414)             at android.view.LayoutInflater.inflate(LayoutInflater.java:365)             at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)             at android.app.Activity.setContentView(Activity.java:2145)             at com.iamnbty.movingtoolbar.SlideShowActivity.onCreate(SlideShowActivity.java:34)             at android.app.Activity.performCreate(Activity.java:5990)             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)             at android.app.ActivityThread.access$800(ActivityThread.java:151)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5254)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.ClassCastException: android.graphics.drawable.RippleDrawable cannot be cast to android.graphics.drawable.StateListDrawable at com.marvinlabs.widget.slideshow.SlideShowView.readAttributeSet(SlideShowView.java:159) at com.marvinlabs.widget.slideshow.SlideShowView.(SlideShowView.java:144) at com.marvinlabs.widget.slideshow.SlideShowView.(SlideShowView.java:138)             at java.lang.reflect.Constructor.newInstance(Native Method)             at java.lang.reflect.Constructor.newInstance(Constructor.java:288)             at android.view.LayoutInflater.createView(LayoutInflater.java:607)             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)             at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)             at android.view.LayoutInflater.inflate(LayoutInflater.java:504)             at android.view.LayoutInflater.inflate(LayoutInflater.java:414)             at android.view.LayoutInflater.inflate(LayoutInflater.java:365)             at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)             at android.app.Activity.setContentView(Activity.java:2145)             at com.iamnbty.movingtoolbar.SlideShowActivity.onCreate(SlideShowActivity.java:34)             at android.app.Activity.performCreate(Activity.java:5990)             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)             at android.app.ActivityThread.access$800(ActivityThread.java:151)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5254)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 07-30 12:31:07.406 21178-21178/? I/Process﹕ Sending signal. PID: 21178 SIG: 9

    opened by vinayjayaram 5
  • Slide is not available: 1

    Slide is not available: 1

    Hello Vincent, First of all I want to thank you for your work. This library is really helpful. All works perfectly except one: it always skips slide at position 1 when playing 1st loop. Even in your Demo app from Play Store. Please, if you know where problem is just point out. Thanks, Andrew

    opened by andreilisun 3
Owner
MarvinLabs
Digital creative studio
MarvinLabs
Material Design implementation for Android 4.0+. Shadows, ripples, vectors, fonts, animations, widgets, rounded corners and more.

Carbon Material Design implementation for Android 4.0 and newer. This is not the exact copy of the Lollipop's API and features. It's a custom implemen

null 3k Dec 30, 2022
ExpandableSelector is an Android library created to show a list of Button/ImageButton widgets inside a animated container which can be collapsed or expanded.

ExpandableSelector ExpandableSelector is an Android library created to show a list of Button/ImageButton widgets inside a animated container which can

Karumi 699 Nov 19, 2022
Parallax everywhere is a library with alternative android widgets with parallax effects.

Parallax Everywhere# Parallax everywhere (PEW) is a library with alternative android views using parallax effects. Demo You can try the demo app on go

fmSirvent 712 Nov 14, 2022
Floating label input widgets

Android Floating Label Widgets A set of input widgets with a hint label that floats when input is not empty. Demo A demo of the widget is worth a thou

MarvinLabs 450 Nov 25, 2022
Set custom font in Android application

MagicViews Provides a simple way to set custom font in Android application. Adding to your project Add the library as a dependency to your build.gradl

Ivan Kocijan 225 Nov 20, 2022
A set of Android-UI components to make it easier to request permission in a user friendly way.

Permission UI A set of Android-UI components to make it easier to request permission in a user friendly way. Access background location A jetpack comp

Stefan Wärting 54 Nov 3, 2022
A Tinder-like Android library to create the swipe cards effect. You can swipe left or right to like or dislike the content.

Swipecards Travis master: A Tinder-like cards effect as of August 2014. You can swipe left or right to like or dislike the content. The library create

Dionysis Lorentzos 2.3k Dec 9, 2022
Android library used to create an awesome Android UI based on a draggable element similar to the last YouTube graphic component.

Draggable Panel DEPRECATED. This project is not maintained anymore. Draggable Panel is an Android library created to build a draggable user interface

Pedro Vicente Gómez Sánchez 3k Dec 6, 2022
StandOut lets you easily create floating windows in your Android app.

Coming Soon Meanwhile, checkout the demo video at http://www.youtube.com/watch?v=S3vHjxonOeg Join the conversation at http://forum.xda-developers.com/

Mark Wei 1.2k Dec 12, 2022
Easily create complex recyclerview adapters in android

?? Due to the nature of my job and growing popularity of Jetpack Compose, I lack the motivation to keep this project alive. Recyclerview is one of the

Riyaz Ahamed 823 Jan 6, 2023
💳 CreditCardView is an Android library that allows developers to create the UI which replicates an actual Credit Card.

CreditCard View CreditCardView is an Android library that allows developers to create the UI which replicates an actual Credit Card. Displaying and en

Vinay Gaba 769 Dec 14, 2022
Android library to create chat message view easily

ChatMessageView ChatMessageView helps you to create chat message view quickly like a typical chatting application. Its a container view, so you can ad

Himanshu Soni 641 Dec 24, 2022
Code Guide: How to create Snapchat-like image stickers and text stickers.

MotionViews-Android Code Guide : How to create Snapchat-like image stickers and text stickers After spending 2000+ hours and releasing 4+ successful a

Uptech 474 Dec 9, 2022
The CustomCalendarView provides an easy and customizable calendar to create a Calendar. It dispaly the days of a month in a grid layout and allows to navigate between months

Custom-Calendar-View To use the CustomCalendarView in your application, you first need to add the library to your application. You can do this by eith

Nilanchala Panigrahy 113 Nov 29, 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
Create an header for com.google.android.material.navigation.NavigationView

Header View This is a view for NavigationView in android.support.design library Import At the moment the library is in my personal maven repo reposito

Raphaël Bussa 106 Nov 25, 2022
Android view that allows the user to create drawings. Customize settings like color, width or tools. Undo or redo actions. Zoom into DrawView and add a background.

DrawView Android view that allows the user to create drawings. Draw anything you like in your Android device from simple view. Customize draw settings

Oscar Gilberto Medina Cruz 839 Dec 28, 2022
This is a sample Android Studio project that shows the necessary code to create a note list widget, And it's an implementation of a lesson on the Pluralsight platform, but with some code improvements

NoteKeeper-Custom-Widgets This is a sample Android Studio project that shows the necessary code to create a note list widget, And it's an implementati

Ibrahim Mushtaha 3 Oct 29, 2022
NeoPOP was created with one simple goal; to create the next generation of a beautiful, affirmative design system

NeoPop is CRED's inbuilt library for using NeoPop components in your app

CRED 254 Dec 29, 2022