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

Related tags

Layout 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
Draftsman is an on device layout inspector which can be embedded in your android app.

Draftsman Draftsman is an on-device layout inspector for Android apps. It allows you to view various properties of rendered Android Views such as widt

Gojek 243 Dec 22, 2022
This library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application. Brought to you by Umano.

Note: we are not actively responding to issues right now. If you find a bug, please submit a PR. Android Sliding Up Panel This library provides a simp

Umano: News Read To You 9.4k Dec 31, 2022
You don’t want your apps look and feel boring, do you? Add some bubbles!

#BubbleAnimationLayout Say hello to Bubble Animation Layout for Android by Cleveroad You don’t want your apps look and feel boring, do you? Add some b

Cleveroad 576 Nov 23, 2022
An elegant way to show your menu or messages.

Android View Hover In my opinion, jumping to a new activity to show your menu is a kind of wasting time and life. So, I think, we need a hover view, t

代码家 3.2k Dec 6, 2022
Animate your activity!

Warning This library is not in development anymore, but we are accepting PRs or successors if anyone is interested. If you want to use these transitio

Pedro Paulo Amorim 1.3k Dec 4, 2022
FixedHeaderTableLayout is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells with scrolling and zooming features. FixedHeaderTableLayout is similar in construction and use as to Android's TableLayout

FixedHeaderTableLayout is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells with scrolling and zooming features. FixedHeaderTableLayout is similar in construction and use as to Android's TableLayout

null 33 Dec 8, 2022
null 2.4k Dec 30, 2022
TileView is a subclass of android.view.ViewGroup that asynchronously displays, pans and zooms tile-based images. Plugins are available for features like markers, hotspots, and path drawing.

This project isn't maintained anymore. It is now recommended to use https://github.com/peterLaurence/MapView. MapView is maintained by Peter, one of o

Mike Dunn 1.5k Nov 21, 2022
An Android library that help you to build app with swipe back gesture.

SwipeBackLayout An Android library that help you to build app with swipe back gesture. Demo Apk GooglePlay Requirement The latest android-support-v4.j

ike_w0ng 6.1k Dec 29, 2022
An Android library that help you to build app with swipe back gesture.

SwipeBackLayout An Android library that help you to build app with swipe back gesture. Demo Apk GooglePlay Requirement The latest android-support-v4.j

ike_w0ng 6.1k Jan 3, 2023
MoviesApp is the sample preview app of the MotionLayout experiments.

Movies. App Movies. is the sample preview app of the MotionLayout experiments. This app realizes the InVision Studio — Movies app concept. Result Upda

Basil Miller 16 Sep 26, 2022
Implementation of ExpandableListview with custom header and custom content.

ExpandableLayout ExpandableLayout provides an easy way to create a view called header with an expandable view. Both view are external layout to allow

Robin Chutaux 1.6k Dec 12, 2022
VoronoiView is a view (ViewGroup) that allows you to add and display views inside Voronoi diagram regions.

Vorolay VoronoiView is a view (ViewGroup) that allows you to add and display views inside Voronoi diagram regions. [Voronoi diagram] (https://en.wikip

Daniil Jurjev 918 Dec 4, 2022
Navigation Drawer Activity with material design style and simplified methods

MaterialNavigationDrawer Navigation Drawer Activity with material design style and simplified methods       It requires 10+ API and android support v7

Fabio Biola 1.6k Dec 30, 2022
Android Sample Project with Material Design and Toolbar.

AndroidMaterialDesignToolbar -- PROJECT IS NOT SUPPORTED Android Sample Project with Material Design and Toolbar. Project use Appcompat library for ma

kemal selim tekinarslan 713 Nov 11, 2022
A beautiful leanback port for Smartphones and Tablets

MaterialLeanBack A beautiful leanback port for Smartphones and Tablets Sample Usage In your layout <com.github.florent37.materialleanback.MaterialLean

Florent CHAMPIGNY 739 Aug 2, 2022
Easy, flexible and powerful Swipe Layout for Android

SwipeRevealLayout A layout that you can swipe/slide to show another layout. Demo Overview Drag mode Drag mode normal: Drag mode same_level: Features F

Chau Thai 1.5k Jan 4, 2023
Android LinearLayout with drag and drop to reorder.

DragLinearLayout An Android LinearLayout that supports draggable and swappable child Views. Why? Why bother doing drag & swap in a LinearLayout when t

Justas Medeišis 446 Nov 25, 2022
A layout that hide the header when the body is scrolled down and reveal it when the header is scrolled up

AndroidAutoHideHeader A layout that hide the header when the body is scrolled down and reveal it when the header is scrolled up Demo Import it ! In yo

Vadim Caen 48 Apr 22, 2022