[Archived] Highlight the best bits of your app to users quickly, simply, and cool...ly

Related tags

UI/UX ShowcaseView
Overview

ShowcaseView

The ShowcaseView (SCV) library is designed to highlight and showcase specific parts of apps to the user with a distinctive and attractive overlay. This library is great for pointing out points of interest for users, gestures, or obscure but useful items.

Holo "New style" Material
Holo style showcaseview new style showcaseview Material style showcaseview

The library is based on the "Cling" view found in the Launcher on Ice-Cream Sandwich and Jelly Bean.

Project set-up

ShowcaseView currently supports API LEVEL 11+

If you're using a Gradle-based project, then you can add SCV as a dependency directly:

compile 'com.github.amlcurran.showcaseview:library:5.4.3'

If you're using Maven (but not Gradle), you can add the APKlib as a dependency:

<dependency>
  <groupId>com.github.amlcurran.showcaseview</groupId>
  <artifactId>library</artifactId>
  <version>5.4.3</version>
  <type>apklib</type>
</dependency>

If you're using a standard project without either Maven or Gradle, you'll have to download the project, and the add the library manually to your project.

Usage

To use ShowcaseView, use the Builder pattern.

As an example:

new ShowcaseView.Builder(this)
    .setTarget(new ActionViewTarget(this, ActionViewTarget.Type.HOME))
    .setContentTitle("ShowcaseView")
    .setContentText("This is highlighting the Home button")
    .hideOnTouchOutside()
    .build();

You can use styles to customise how a ShowcaseView looks. I'll write more documentation soon, but for now, check out the sample project's styles.

Sample Project

There's a sample project available which you can find in the project, or as an app on the Google Play Store.

What's the legacy branch?

The legacy branch is still available for people to use. This has more features than the master branch, but it more unwieldy to use and less stable. I don't support it at all - you'll have to build and compile it yourself. It isn't available on Maven Central either.

Is it worth using?

Perhaps. Why not ask Google, iPlayer Radio, or AllCast, which each use the library?

Previous users include The Guardian and HaxSync

What's missing in v5

  • ShowcaseViews: the class which queues up ShowcaseViews in a tutorial-type method. I never really liked this class (generally, you should use SCV sparingly); I'll add it back in based on the Builder class when I can.
  • Ghostly hand: this has gone for now until I can test-drive it back in.
  • Scale multiplier: this has gone for simplicity - if people really loved it I'll add in back in

FAQs

Where has X feature gone?

Look one paragraph up!

Waaaah, but I really liked feature X!!!

Switch to the legacy branch and use that one then! All legacy features are in there.

What happened to all the other constructors?

Gone. You should be using the new Target API.

What if I want to add feature X?

At the moment, I'm not taking any feature requests. It's unlikely I'll take many anyway, unless I feel they are both useful and well tested. If you have some cosmetic tweak then I don't want that added into the library as another option. But, if you need to make a tweak to the library to add such a tweak to your own, overridden ShowcaseView then that is totally great.

Copyright and Licensing

Copyright Alex Curran (@amlcurran) © 2012-2014. All rights reserved.

This library is distributed under an Apache 2.0 License.

Comments
  • OutOfMemoryError crashes app after creating multiple instances (using 5.1.0-Snapshot)

    OutOfMemoryError crashes app after creating multiple instances (using 5.1.0-Snapshot)

    Hi everyone,

    Even though this error was reported and solved(#183), I still receive it even after upgrading to 5.1.0-Snapshot. I'm creating six instances of ShowCaseViews one after another as a tutorial in my app, and I can only create 34 instances(that is, after starting the tutorial for the sixth time) before the app crashes. Every time a new ShowCaseView is created, the heap is increased to a certain point that gives OutOfMemoryError and crashes the app. I really love this library and its design and want to use it in my app, but right now the only solution seems to limit the user and only show the tutorial after the installation, but I want to enable the user to use the tutorial anytime.

    Is it really solved as described in the issue given above or is there another solution that wasn't released as a snapshot? Because I can't think of a way to overcome this problem and I desperately need help. Thanks in advance.

    I am using Samsung Galaxy S3(GT-I9305) running on Android 4.3 and here is my error log:

    7583-7583/de.kisi.android.plus E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.OutOfMemoryError at android.graphics.Bitmap.nativeCreate(Native Method) at android.graphics.Bitmap.createBitmap(Bitmap.java:726) at android.graphics.Bitmap.createBitmap(Bitmap.java:703) at android.graphics.Bitmap.createBitmap(Bitmap.java:670) at com.github.amlcurran.showcaseview.ShowcaseView.updateBitmap(ShowcaseView.java:187) at com.github.amlcurran.showcaseview.ShowcaseView.onGlobalLayout(ShowcaseView.java:370) at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:839) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2050) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6364) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) at android.view.Choreographer.doCallbacks(Choreographer.java:591) at android.view.Choreographer.doFrame(Choreographer.java:561) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) at dalvik.system.NativeStart.main(Native Method)

    opened by tuncakagan 36
  • Not working with Android L / Material design

    Not working with Android L / Material design

    When I started modifying my app for Android L, I noticed that the app crashes when ShowcaseView gets initialized:

    java.lang.RuntimeException: insertShowcaseViewWithType cannot be used when the theme has no ActionBar
            at com.github.amlcurran.showcaseview.targets.ActionBarReflector.getHomeButton(ActionBarReflector.java:27)
            at com.github.amlcurran.showcaseview.targets.ActionBarReflector.getActionBarView(ActionBarReflector.java:20)
            at com.github.amlcurran.showcaseview.targets.ActionViewTarget.setUp(ActionViewTarget.java:22)
            at com.github.amlcurran.showcaseview.targets.ActionViewTarget.getPoint(ActionViewTarget.java:29)
            at com.github.amlcurran.showcaseview.ShowcaseView$1.run(ShowcaseView.java:149)
            at android.os.Handler.handleCallback(Handler.java:738)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5070)
            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:836)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)
    
    opened by yanniks 23
  • Add aar to Maven Central

    Add aar to Maven Central

    It would be nice to see it in maven central in aar format.

    Check here if you need a gradle script to update on maven: https://github.com/chrisbanes/gradle-mvn-push Check here if you need help to register your first artifact on Sonatype OSS Repository: http://gmariotti.blogspot.it/2013/09/publish-aar-file-to-maven-central-with.html

    opened by gabrielemariotti 22
  • ShowcaseView draws on top of navigation bar

    ShowcaseView draws on top of navigation bar

    There's a weird bug on Lollipop:

    The ShowcaseView extends vertically on all the screen height, resulting in the Showcase advance button being drawn over the new L navigation controls.

    Looking into it for a possible fix, I found out that the ShowcaseView's getMeasuredHeight returns the screen height (1920 on a Nexus 5) instead of screen height - navigation bar's height, like it is the case on KitKat.

    I cannot find an explanation for this except a bug in L. I could not think of a workaround either as overriding onMeasure() to return the correct height on L, did not fix it but resulted in other visual glitches.

    Even weirder, if you look at the ShowcaseView in UI Automator, it reports the correct height for the ShowcaseView RelativeLayout although the Showcase button is drawn outside of it.

    bug 
    opened by bubbleguuum 19
  • NullPointeException after hide on emulator

    NullPointeException after hide on emulator

    Hey there,

    I have a problem with ShowcaseView 5.0.0-SNAPSHOT pulled today (02.06.2014). I've created a normal FragmentActivity and added the code in the onCreated()-Method from the Wiki to highlight the HomeButton.

    new ShowcaseView.Builder( this )
             .setTarget( new ActionViewTarget( this, ActionViewTarget.Type.HOME ) )
             .setContentTitle( "ShowcaseView" )
             .setContentText( "This is highlighting the Home button" )
             .hideOnTouchOutside()
             .build();
    

    If I start it with an emulator with the following settings, start the app and click the okay button. The App will crash. emulator

    Stacktrace:

    06-02 09:40:09.587: E/AndroidRuntime(1993): FATAL EXCEPTION: main
    06-02 09:40:09.587: E/AndroidRuntime(1993): java.lang.NullPointerException
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at com.github.amlcurran.showcaseview.StandardShowcaseDrawer.erase(StandardShowcaseDrawer.java:75)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at com.github.amlcurran.showcaseview.ShowcaseView.dispatchDraw(ShowcaseView.java:303)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.view.View.draw(View.java:10981)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.widget.FrameLayout.draw(FrameLayout.java:450)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.view.ViewRootImpl.draw(ViewRootImpl.java:2026)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.os.Handler.dispatchMessage(Handler.java:99)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.os.Looper.loop(Looper.java:137)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at android.app.ActivityThread.main(ActivityThread.java:4424)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at java.lang.reflect.Method.invoke(Method.java:511)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    06-02 09:40:09.587: E/AndroidRuntime(1993):     at dalvik.system.NativeStart.main(Native Method)
    

    I added some logs into the source code here is the result:

    06-02 09:25:29.263: E/this(1807): updateBitmap() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.263: E/this(1807): updateBitmap() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.273: E/this(1807): updateBitmap() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.283: E/this(1807): dispatchDraw() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.283: E/this(1807): bitmapBuffer: android.graphics.Bitmap@91076528 - this: com.github.amlcurran.showcaseview.StandardShowcaseDrawer@90b31f48
    06-02 09:25:29.373: E/this(1807): dispatchDraw() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.383: E/this(1807): bitmapBuffer: android.graphics.Bitmap@91076528 - this: com.github.amlcurran.showcaseview.StandardShowcaseDrawer@90b31f48
    06-02 09:25:29.403: E/this(1807): updateBitmap() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.463: E/this(1807): dispatchDraw() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.463: E/this(1807): bitmapBuffer: android.graphics.Bitmap@91076528 - this: com.github.amlcurran.showcaseview.StandardShowcaseDrawer@90b31f48
    06-02 09:25:29.523: E/this(1807): dispatchDraw() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:29.523: E/this(1807): bitmapBuffer: android.graphics.Bitmap@91076528 - this: com.github.amlcurran.showcaseview.StandardShowcaseDrawer@90b31f48
    
    <clicked the okay button>
    
    06-02 09:25:30.223: E/this(1807): onClick() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:30.223: E/this(1807): hide() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:30.223: E/this(1807): clearBitmap() bitmapBuffer: android.graphics.Bitmap@91076528
    06-02 09:25:30.223: E/this(1807): dispatchDraw() bitmapBuffer: null
    06-02 09:25:30.223: E/this(1807): bitmapBuffer: null - this: com.github.amlcurran.showcaseview.StandardShowcaseDrawer@90b31f48
    

    I dont't know why android try to dispatch draw after the view was hide (bitmapBuffer cleared). When I activate the "Use Host GPU" in the Emulator settings I couldn't reprodruce this exception. Any ideas?

    opened by JanLoebel 18
  • Upload to Maven Central

    Upload to Maven Central

    This is really important for many projects.

    Maven makes dependency management much more easy. Also, by uploading to Maven Central, the package will be available for other compatible dependency/build systems, like Gradle.

    opened by jonasfa 18
  • Creating multiple instances of a ShowcaseView crashes the application with an outOfMemory error.

    Creating multiple instances of a ShowcaseView crashes the application with an outOfMemory error.

    Stack Trace: 05-20 17:59:09.166 30218-30218/com.****_._*** E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.OutOfMemoryError at android.graphics.Bitmap.nativeCreate(Native Method) at android.graphics.Bitmap.createBitmap(Bitmap.java:726) at android.graphics.Bitmap.createBitmap(Bitmap.java:703) at android.graphics.Bitmap.createBitmap(Bitmap.java:670) at com.github.amlcurran.showcaseview.ShowcaseView.updateBitmap(ShowcaseView.java:202) at com.github.amlcurran.showcaseview.ShowcaseView.onGlobalLayout(ShowcaseView.java:370) at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:839) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2050) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6364) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) at android.view.Choreographer.doCallbacks(Choreographer.java:591) at android.view.Choreographer.doFrame(Choreographer.java:561) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) at dalvik.system.NativeStart.main(Native Method)

    Steps to reproduce: Create six separate instances of a ShowcaseView in four different views using the procedure detailed in the README.md.

    Noted, this could be an application specific issue, however memory usage continually rises each time a ShowcaseView is created.

    Device: Galaxy S3 LTE, GT-I9305 running Android 4.3

    opened by AMRoche 16
  • java.lang.IllegalArgumentException: Layout: -998646 < 0

    java.lang.IllegalArgumentException: Layout: -998646 < 0

    I've got this exception that crashed my app. Android 4.2.2, Nexus 10:

    05-20 16:43:53.869: E/AndroidRuntime(26172): java.lang.IllegalArgumentException: Layout: -998646 < 0
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.text.Layout.<init>(Layout.java:138)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.text.DynamicLayout.<init>(DynamicLayout.java:99)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.text.DynamicLayout.<init>(DynamicLayout.java:80)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.text.DynamicLayout.<init>(DynamicLayout.java:63)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.text.DynamicLayout.<init>(DynamicLayout.java:49)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at com.github.amlcurran.showcaseview.TextDrawer.draw(TextDrawer.java:55)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at com.github.amlcurran.showcaseview.ShowcaseView.dispatchDraw(ShowcaseView.java:255)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.View.getDisplayList(View.java:12648)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.View.getDisplayList(View.java:12694)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2910)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.View.getDisplayList(View.java:12588)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.View.getDisplayList(View.java:12694)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1198)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2173)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2045)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1854)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.Choreographer.doCallbacks(Choreographer.java:562)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.Choreographer.doFrame(Choreographer.java:532)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.os.Handler.handleCallback(Handler.java:725)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.os.Handler.dispatchMessage(Handler.java:92)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.os.Looper.loop(Looper.java:137)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at android.app.ActivityThread.main(ActivityThread.java:5041)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at java.lang.reflect.Method.invokeNative(Native Method)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at java.lang.reflect.Method.invoke(Method.java:511)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    05-20 16:43:53.869: E/AndroidRuntime(26172):    at dalvik.system.NativeStart.main(Native Method)
    
    opened by makovkastar 16
  • OutOfMemory/Heap Space error (Can't import library into ADT/Eclipse)

    OutOfMemory/Heap Space error (Can't import library into ADT/Eclipse)

    Hi there,

    I'm not sure what i'm doing differently to you all, but I can't get this fantastic looking library to import into ADT/Eclipse (Build: v22.0.1-685705), and Google/Stack Overflow isn't turning up any results so i'm at a loss.

    I have tried importing the library (Version 4), and the entire project (library and sample) into Eclipse using the standard Import > Android > Existing Android Code into Workspace which appears to work correctly, and doesn't show any errors. I then add the library as a dependancy in my project - again no errors.

    I tried out some of the methods from the sample/docs, which eclipse correctly identified and let me import the relevant packages, however when I tried to Run my app, Eclipse continually increased the heap size until it ran out of memory and then crashed. I removed the ShowcaseView methods from my code and tried again, with the same outcome. I removed the ShowcaseView library as a dependancy of my app, and then my app runs correctly again.

    I fiddled with various options for several hours last night, re-importing, cleaning etc and couldn't get the library to run. Can anyone give me any pointers or advice? A step-by-step guide to getting the library imported into ADT/Eclipse would be amazing, or at least anywhere that I may need to look for errors etc to help diagnose the problem.

    Would love to be able to use this amazing library, as so many others appear to be able to.

    opened by jaybayley 16
  • java.lang.IllegalArgumentException: width and height must be > 0

    java.lang.IllegalArgumentException: width and height must be > 0

    java.lang.IllegalArgumentException: width and height must be > 0 at android.graphics.Bitmap.createBitmap(Bitmap.java:603) at android.graphics.Bitmap.createBitmap(Bitmap.java:585) at com.github.amlcurran.showcaseview.ShowcaseView.updateBitmap(ShowcaseView.java:169) at com.github.amlcurran.showcaseview.ShowcaseView.access$100(ShowcaseView.java:29) at com.github.amlcurran.showcaseview.ShowcaseView$1.run(ShowcaseView.java:148) at android.os.Handler.handleCallback(Handler.java:605) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4517) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) at dalvik.system.NativeStart.main(Native Method)

    opened by alex-dokienko 15
  • Build problems

    Build problems

    The current sources do not build. I see several problems:

    1. The library and sample pom.xml files reference parent version 3.0.1, while the parent version seems to be 3.1.
    2. Compile errors in ShowcaseView.java - missing import and missing return statement.
    opened by mmartikainen 15
  • I use my own custom style, but I want to use cling.png circle like the original, how?

    I use my own custom style, but I want to use cling.png circle like the original, how?

    I've created & use my own custom style like below, but I want to use cling.png circle like the original. How to achieve that? I've tried to put it in sv_showcaseColor but it can't accept drawable. Any solution?

    <style name="CustomShowcaseMaterial" parent="ShowcaseView">
        <item name="sv_backgroundColor">#CC000000</item>
        <item name="sv_showcaseColor">@drawable/cling</item>
        <item name="sv_buttonText">Mengerti!</item>
        <item name="sv_titleTextAppearance">@style/CustomTitleMaterial</item>
        <item name="sv_detailTextAppearance">@style/CustomTextMaterial</item>
    </style>
    
    <style name="CustomTitleMaterial" parent="TextAppearance.ShowcaseView.Title.Light">
        <item name="android:textColor">@color/background_active</item>
    </style>
    
    <style name="CustomTextMaterial" parent="TextAppearance.ShowcaseView.Detail.Light">
        <item name="android:textColor">#ffffff</item>
    </style>
    

    In my fragment:

    Target target = new ViewTarget(R.id.menu_cari, act);
                        new ShowcaseView.Builder(act)
                                .setTarget(target)
                                .setContentTitle("Ingin Cari Kampus?")
                                .setContentText("Klik tombol ini dan temukan kampus sesuai dengan kriteria Anda!")
                                .hideOnTouchOutside()
                                .withMaterialShowcase()
                                .setStyle(R.style.CustomShowcaseMaterial)
                                .build();
    
    opened by topex-psy 0
  • Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 8 to color: type=0x1

    Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 8 to color: type=0x1

    I cant execute it anymore it complains about errors do you know what could cause this?

    04-16 00:40:21.946 9105-9105/com.blogspot.choplabalagun.bluetoothcarbff D/AndroidRuntime: Shutting down VM 04-16 00:40:21.949 9105-9105/com.blogspot.choplabalagun.bluetoothcarbff E/AndroidRuntime: FATAL EXCEPTION: main Process: com.blogspot.choplabalagun.bluetoothcarbff, PID: 9105 java.lang.IllegalStateException: Could not execute method for android:onClick at android.view.View$DeclaredOnClickListener.onClick(View.java:5362) at android.view.View.performClick(View.java:6303) at android.widget.CompoundButton.performClick(CompoundButton.java:134) at android.view.View$PerformClick.run(View.java:24828) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6798) 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:767) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at android.view.View$DeclaredOnClickListener.onClick(View.java:5357) at android.view.View.performClick(View.java:6303)  at android.widget.CompoundButton.performClick(CompoundButton.java:134)  at android.view.View$PerformClick.run(View.java:24828)  at android.os.Handler.handleCallback(Handler.java:789)  at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6798)  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:767)  Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 8 to color: type=0x1 at android.content.res.TypedArray.getColor(TypedArray.java:473) at com.github.amlcurran.showcaseview.ShowcaseView.updateStyle(ShowcaseView.java:549) at com.github.amlcurran.showcaseview.ShowcaseView.(ShowcaseView.java:94) at com.github.amlcurran.showcaseview.ShowcaseView.(ShowcaseView.java:62) at com.github.amlcurran.showcaseview.ShowcaseView$Builder.(ShowcaseView.java:378) at com.blogspot.choplabalagun.bluetoothcarbff.classes.Help.CustomHelp(Help.java:62) at com.blogspot.choplabalagun.bluetoothcarbff.MainActivity.CheckBoxClick(MainActivity.java:420) at java.lang.reflect.Method.invoke(Native Method)  at android.view.View$DeclaredOnClickListener.onClick(View.java:5357)  at android.view.View.performClick(View.java:6303)  at android.widget.CompoundButton.performClick(CompoundButton.java:134)  at android.view.View$PerformClick.run(View.java:24828)  at android.os.Handler.handleCallback(Handler.java:789)  at android.os.Handler.dispatchMessage(Handler.java:98)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6798)  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:767) 

    opened by masterchop 1
  • Error after updating to the latest gradle

    Error after updating to the latest gradle

    Hello, after updating to the latest gradle, I'm seeing red errors wherever "android:layout_width" attributes were used. As a result, I can't change the button background too.

    opened by makkhay 0
  • Can you reset the single shot status of a ShowcaseView?

    Can you reset the single shot status of a ShowcaseView?

    Just a question, I'm using the ShowcaseView with single shot and it works great. The thing is it would be nice to somehow reset the status of single shot in order to display the guide once again.

    Like if the user first skips through the guide and later on wants to view it again. How do I reset the single shot status of a ShowcaseView to display it only once - again?

    Is it possible to do this with this library?

    Thanks!

    opened by FelixEder 0
Releases(v5.4.3)
Owner
Alex Curran
Android/iOS/Frontend lead developer
Alex Curran
Animation View to Highlight particular Views 🎯 for Android

TargetView Animation View to Highlight particular Views ?? for Android, it can be Used with Views that you see important (Like CountDownTimer), And al

Anas Altair 53 Aug 7, 2021
Make a cool intro for your Android app.

AppIntro AppIntro is an Android Library that helps you build a cool carousel intro for your App. AppIntro has support for requesting permissions and h

AppIntro Team 10.3k Dec 30, 2022
Make a cool intro for your Android app.

AppIntro AppIntro is an Android Library that helps you build a cool carousel intro for your App. AppIntro has support for requesting permissions and h

AppIntro Team 40 Jan 3, 2023
FloatingView can make the target view floating above the anchor view with cool animation

FloatingView FloatingView can make the target view floating above the anchor view with cool animation Links 中文版 README Blog about FloatingView demo.ap

UFreedom 1.8k Dec 27, 2022
A cool Open Source CoverFlow view for Android with several fancy effects.

FancyCoverFlow THIS PROJECT IS NO LONGER MAINTAINED! What is FancyCoverFlow? FancyCoverFlow is a flexible Android widget providing out of the box view

David Schreiber-Ranner 1.1k Nov 10, 2022
A download progressbar with cool animation

FreshDownloadView ##About FreshDownloadView is a java library for Android,It's a good way to show download progress with a cool animtion.some inspirat

null 747 Nov 23, 2022
:star2:A cool dynamic view library

ENViews ENViews, A cool dynamic view library.All designed by Nick Buturishvili ENViews, 一个华丽丽的动效控件库,所有控件原型取自Nick Buturishvili的设计作品 Preview Original de

Est 1.8k Jan 3, 2023
[] Android library that provides a file explorer to let users select files on external storage.

aFileChooser - Android File Chooser aFileChooser is an Android Library Project that simplifies the process of presenting a file chooser on Android 2.1

Paul Burke 1.8k Jan 5, 2023
Bubbles for Android is an Android library to provide chat heads capabilities on your apps. With a fast way to integrate with your development.

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

Txus Ballesteros 1.5k Jan 2, 2023
Make your native android Toasts Fancy. A library that takes the standard Android toast to the next level with a variety of styling options. Style your toast from code.

FancyToast-Android Prerequisites Add this in your root build.gradle file (not your module build.gradle file): allprojects { repositories { ... ma

Shashank Singhal 1.2k Dec 26, 2022
Make your native android Dialog Fancy. A library that takes the standard Android Dialog to the next level with a variety of styling options. Style your dialog from code.

FancyAlertDialog-Android Prerequisites Add this in your root build.gradle file (not your module build.gradle file): allprojects { repositories { ..

Shashank Singhal 350 Dec 9, 2022
A tiny window overlay to log app internal on top of your android app

DebugOverlay A logcat alike overlay to display log messages in your app as independent overlay. Typically in android you would log some app internals

Hannes Dorfmann 150 Nov 29, 2022
Useful library to use custom fonts in your android app

EasyFonts A simple and useful android library to use custom fonts in android apps without adding fonts into asset/resource folder.Also by using this l

Vijay Vankhede 419 Sep 9, 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
Highligth specific points of interest of your app

ShowTipsView ShowTipsView let you highligth specific points of interest of your app. Usage ShowTipsView showtips = new ShowTipsBuilder(this) .setTarg

Frederico Silva 602 Dec 4, 2022
Android Material Json Form Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular format.

Android Json Wizard Android Json Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular f

Vijay Rawat 355 Nov 11, 2022
A simple screen that is shown when your app gets crashed instead of the normal crash dialog. It's very similar to the one in Flutter.

Red Screen Of Death What A simple screen that is shown when your app gets crashed instead of the normal crash dialog. It's very similar to the one in

Ahmad Melegy 178 Dec 9, 2022
AcaryaApp - An App made for Changing your lifestyle

AcaryaApp: An App made for Changing your lifestyle Problem Statement People nowa

Yash Grover 3 Jan 11, 2022