Giter VIP home page Giter VIP logo

showcaseview's Introduction

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.

showcaseview's People

Contributors

amlcurran avatar anaddaf avatar andreynovikov avatar barbeau avatar blundell avatar bryant1410 avatar cazador4 avatar ened avatar fhoeborn avatar guillermomuntaner avatar ilueckel avatar juliendn avatar kamiox avatar leandros avatar lizottenj avatar louiskirsch avatar martinbonnin avatar maxcanna avatar morgenroth avatar mr-archano avatar nikwen avatar odedniv avatar peter-budo avatar robhor avatar samueltardieu avatar sergiiz avatar swolf91 avatar tato469 avatar tuliomonteazul avatar tyborg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

showcaseview's Issues

A way to block being able to click on the showcased view?

I have a showcase of a view and I want to disable the ability to be able to click on the showcased view and force the user to only be able to click on the OK button.

Is this possible? I have not been able to find a way yet.

Thanks!

Inability to showcase an ImageView within a GridView

Scenario:

  1. Have a GridView with multiple ImageView.
  2. Try to showcase the ImageView at position 0.

Expected result:
ShowcaseView is able to showcase the first ImageView in the GridView by recognizing the object and its location of the screen.

Actual result:
I am unable to get ShowcaseView to recognize the ImageView within the GridView.

Additional Info:
I am loading multiple instances of the same fragment using ActionBarSherlock (i.e. SherlockFragment).
I am able to work around the problem by X and Y, but it is not optimal, as different layouts yield different results.
screenshot_2013-05-04-22-07-42
Here's a short version of my code:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

    v = inflater.inflate(R.layout.activity_grid_fragment, container, false);

    gv = (GridView) v.findViewById(R.id.gridView);
    gv.setAdapter(new ImageAdapter(v.getContext(), args));
    registerForContextMenu(gv);
    gv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parentView, View iv, int position, long id) {
            .
            .
        }
    });

    if (firstLaunch ){
        showShowcase();
    }
    return v;
}

private void showShowcase() {
    ShowcaseView sv;

    ShowcaseView.ConfigOptions co = new ShowcaseView.ConfigOptions();
    co.hideOnClickOutside = false;
    sv = ShowcaseView.insertShowcaseView(gv.getChildAt(0), this.getSherlockActivity(), R.string.showcase_tile_title,
            R.string.showcase_tile, co);
    sv.animateGesture(400, 400, 20, 400);
    sv.animateGesture(20, 400, 400, 400);

    sv.setOnShowcaseEventListener(new OnShowcaseEventListener() {

        @Override
        public void onShowcaseViewShow(ShowcaseView showcaseView) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onShowcaseViewHide(ShowcaseView showcaseView) {
            // TODO Auto-generated method stub
        }
    });
}

Basically, there's no error. ShowcaseView doesn't highlight anything, because what I am passing is null. My problem is that I don't know what to pass for it to showcase GridView at position 0.

Create a bi-directional link with project RoboDemo

Hello @Espiandev ,

I am the author of RoboDemo, a free project as yours to provide showcasing for android activities. I originally asked a question on Stack Over Flow and got redirected to your project. I enjoyed it but tried a different approach by using an overlay activity.

I would find it interesting to share a link to our respective projects, as an alternative to each other.

Greetings,
Stéphane

Library itself shows errors importing

I downloaded and imported your library , but just after the import i gave me errors inside the library itself

List of errors

Unable to find class ViewHelper
Unable to find class AnimatorSet
Unable to find class ObjectAnimator

I am not sure whether i need to import or add something else or what is the real deal.

Doesnt work with actionbarcompat

I tried to work implement this with the new actionbar compat but it throughs an exception:
RuntimeException: insertShowcaseViewWithType cannot be used when the theme has no ActionBar

Create Next in multiViews

Great work.
I am using multi views and when the user interacts with the item I want the next view.

so i have stored the current view:

    currentView = view;

so when it is called it is hidden

 public void next() {
    if (currentView != null) {
        // get current and hide
        currentView.hide();
    }

    showNextView

}

odd behaviour in portrait

4.0.3 using multiview
I have just updated to latest code.

In landscape the button is highlighted with showcase fine.

However in portrait, I am left with a black box in the centre, covering the item it is showcasing, the showcase is visible fine

.OK on 4.1.2 and emulator api 8

Is there any way to adjust the button's position?

I found the confirm button is placed at the right bottom of the view on default, this is not proper when I need to showcase some view just at the position, as the button would overlap that view. Although there is an option to hide the button, it cannot be set outside the class, such as in a builder. Is there any way to adjust the button's position without modifying the code?

Compatibility with lower API levels

The point of using NineOldAndroids as a library was to get compatibility with pre-3.0 devices, but currently ShowcaseView doesn't work on these API levels.

NullPointerException (Loads and loads of them) in System.err

I'm getting loads and loads of NPE's outputted in System.err. They don't crash the app, but there is LOADS of them!

06-28 20:06:30.322: W/System.err(7737): java.lang.NullPointerException
06-28 20:06:30.326: W/System.err(7737): at android.graphics.Canvas.setBitmap(Canvas.java:143)
06-28 20:06:30.326: W/System.err(7737): at com.github.espiandev.showcaseview.ShowcaseView.dispatchDraw(ShowcaseView.java:400)
06-28 20:06:30.326: W/System.err(7737): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
06-28 20:06:30.326: W/System.err(7737): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
06-28 20:06:30.326: W/System.err(7737): at android.view.View.draw(View.java:6883)
06-28 20:06:30.326: W/System.err(7737): at

android.widget.FrameLayout.draw(FrameLayout.java:357)
06-28 20:06:30.326: W/System.err(7737): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
06-28 20:06:30.326: W/System.err(7737): at android.view.ViewRoot.draw(ViewRoot.java:1522)
06-28 20:06:30.326: W/System.err(7737): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
06-28 20:06:30.326: W/System.err(7737): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
06-28 20:06:30.326: W/System.err(7737): at android.os.Handler.dispatchMessage(Handler.java:99)
06-28 20:06:30.326: W/System.err(7737): at android.os.Looper.loop(Looper.java:130)
06-28 20:06:30.326: W/System.err(7737): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-28 20:06:30.326: W/System.err(7737): at java.lang.reflect.Method.invokeNative(Native Method)
06-28 20:06:30.326: W/System.err(7737): at java.lang.reflect.Method.invoke(Method.java:507)
06-28 20:06:30.330: W/System.err(7737): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-28 20:06:30.330: W/System.err(7737): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-28 20:06:30.330: W/System.err(7737): at dalvik.system.NativeStart.main(Native Method)

Using Showcase with Fragments

Hello,

As far as I know you cannot get a fragment element from its Activity using 'findViewById' (it returns null) which is the method used in insertShowcaseView()

And if I directly pass the View to insertShowcaseView() from my Fragment (onCreateView()) nothing happens.

So how can I use it with Fragments?

Thanks in advance

Add to decor with SlidingMenu

I have a problem using the Showcaseview in combination with SlidingMenu. It simply doesn't show up when adding to decor view. Adding to content works. Does anyone know this problem?

Thanks :)

Showcase ActionBar spinner

When you have navigation as a dropdown spinner on the ActionBar.

I can't seem to showcase this item? It doesn't have an id to reference. Is there a specific way it can be done?

Ok string in showcase button xml file

Hi,
I could make a pull request but that's a very little patch.

You could remove the string.xml file (which contains only the "Ok" string) and replace in showcase_button.xml
android:text="@string/ok" by android:text="@android:string/ok"

Hope it helps :)

setAlpha not available on some Android builds

When I run Showcase view in a 2.3.6 device, I get the following error:

E/AndroidRuntime(  925): FATAL EXCEPTION: main
E/AndroidRuntime(  925): java.lang.NoSuchMethodError: android.view.View.setAlpha
E/AndroidRuntime(  925):    at     com.espian.showcaseview.ShowcaseView.init(ShowcaseView.java:134)
E/AndroidRuntime(  925):    at com.espian.showcaseview.ShowcaseView.access$0(ShowcaseView.java:85)
E/AndroidRuntime(  925):    at com.espian.showcaseview.ShowcaseView$1.run(ShowcaseView.java:153)
E/AndroidRuntime(  925):    at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(  925):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(  925):    at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(  925):    at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime(  925):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  925):    at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(  925):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(  925):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(  925):    at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager(   97):   Force finishing activity com.krissytosi/.activities.MainActivity

I'm happy to try to provide a solution (if there is one) in a pull request, but wanted to check first and see whether this library was/is supposed to be able to run on older versions of Android.

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.

Simple queueing of ShowcaseViews

Hi,

For my app, I'd like to display a series of ShowcaseViews in sequence. Is there any easy way to do this other than to display the next in a ShowcaseEventListener?

Thanks,
Andrew

minSdkVersion should be set to at least 4

If lint checks are enabled, then library does not build. E.g. Build.VERSION.SDK_INT appeared in API4. You should set minSdkVersion to appropriate value in AndroidManifest.xml

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.

NoSuchFieldException: mActionMenuPresenter

I use Android 4.2.2 with the latest version of ABS.

When I try to display a ShowcaseView on an action bar item:

02-19 17:44:05.416: W/System.err(19597): java.lang.NoSuchFieldException: mActionMenuPresenter
02-19 17:44:05.416: W/System.err(19597): at java.lang.Class.getDeclaredField(Class.java:631)
02-19 17:44:05.416: W/System.err(19597): at com.github.espiandev.showcaseview.ShowcaseView$2.run(ShowcaseView.java:253)
02-19 17:44:05.416: W/System.err(19597): at android.os.Handler.handleCallback(Handler.java:725)
02-19 17:44:05.416: W/System.err(19597): at android.os.Handler.dispatchMessage(Handler.java:92)
02-19 17:44:05.416: W/System.err(19597): at android.os.Looper.loop(Looper.java:137)
02-19 17:44:05.416: W/System.err(19597): at android.app.ActivityThread.main(ActivityThread.java:5193)
02-19 17:44:05.416: W/System.err(19597): at java.lang.reflect.Method.invokeNative(Native Method)
02-19 17:44:05.416: W/System.err(19597): at java.lang.reflect.Method.invoke(Method.java:511)
02-19 17:44:05.416: W/System.err(19597): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
02-19 17:44:05.426: W/System.err(19597): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
02-19 17:44:05.426: W/System.err(19597): at dalvik.system.NativeStart.main(Native Method)

Preference access should be done in a separate thread.

I really love your library, and I m playing with it right now.

I noticed you access preference (one or multi shot parameter) in the UI thread.

I activated the strict mode death penalty in my app to be sure to be a good citizen during the debug time :-)

Can you access pref in a new thread?

Thanks for your great code!

Btw, I would really love to use something else than a png for the circle and be able to change dynamically its size... I know it s on the todo list, but IMO it is the most interesting evolution to bring to your lib. + Actionbar support of course :-)

@Override
    public void onClick(View view) {
        // If the type is set to one-shot, store that it has shot
        if (shotType == TYPE_ONE_SHOT) {
            SharedPreferences internal = getContext().getSharedPreferences("showcase_internal", Context.MODE_PRIVATE);
            internal.edit().putBoolean("hasShot", true).commit();
        }

        if (mListener == null) {
            hide();
        } else {
            mListener.onClick(view);
        }
    }

setText does not update view

setText does not update the view by itself. In fact the only way I've found to update an existing view is to change where the showcase is pointing.

In my case I have a tutorial that would simply reuse the showcase and change the text and pointer around. I ran into the issue when I had a verbose explanation that needed to be split on smaller screens. The setText didn't cause the showcase to update.

I've also "fixed" the triple parent issue on my device as well as added the ability to showcase contextual action bars, but I'm new to git and don't have time at the moment to figure out how to share this.

[Suggest] create a popupwindow version showcaseview

Current showcaseview need to define in contentview, it's not easy to reuse, and block to indicate actionbar menu item also.
in my project, I use showcaseview in dialog, becuase i'm a junior android developer.
But I think it possible to make a popupwindow wrapper to make it can be easily use in every place in code. just like the quickaction.

Set color of detailText

First off, great job on ShowcaseView. My only problem is that I would like the detailText to be black as I am using a Light Theme

Sample's noise

Hello,

there is some noise in the sample that make it less clear than it should be :

  1. the layout file (main.xml) defines 2 buttons with the same id : button. It gives the feeling that this is necessary to make things work. Lint should have raised a flag.
  2. in the sample activity, prefer a onCreate method like this (your own should not compile due to parenthesis problems) :
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
        sv = (ShowcaseView) findViewById(R.id.showcase);
        sv.setShowcaseView(button);
        sv.setOnShowcaseEventListener(this);
    }

Problem using TYPE_ONE_SHOT

Using the following code inside onCreateOptionsMenu()

ShowcaseView.ConfigOptions mOptions = new ShowcaseView.ConfigOptions();
mOptions.block = true;
mOptions.hideOnClickOutside = false;
mOptions.shotType = ShowcaseView.TYPE_ONE_SHOT;
ShowcaseView sv = ShowcaseView.insertShowcaseViewWithType(ShowcaseView.ITEM_ACTION_OVERFLOW, 1, getSherlockActivity(),
"Test 1", "Test 2", mOptions);

Using the following code inside onOptionsItemSelected()
sv.setShowcaseItem(ShowcaseView.ITEM_ACTION_ITEM, 1, getSherlockActivity());

The ShowcaseView is not being displayed unless i remove the mOptions.shotType = ShowcaseView.TYPE_ONE_SHOT from the code above.

DecorView not drawing over SurfaceView

I have an application that uses SurfaceView do draw content. I wanted to add your nice library to my application. But in my case it does not draw over my SurfaceView.

If I call mySurfaceView.setVisibility(View.INVISIBLE) just before creating ShowcaseView everything works perfect (except that my main view area is black).

Is it a limitation of Android architecture, or I can tune something in my SurfaceView or you can fix something in ShowcaseView library?

I have asked a corresponding question on StackOverflow:
http://stackoverflow.com/questions/15100535/decorview-not-drawing-over-surfaceview

Option to call cancel in multiViews

Following on from pressing next, with the current view I have created a cancel() option which is called when user presses back.

public void cancel() {
    // cancel the tutorial
    if (currentView != null) {
        // get current and hide
        currentView.hide();
    }

    if (views != null)
        views.clear();
    showcaseAcknowledgedListener.onShowCaseAcknowledged(currentView);
}

using showcaseview in a light background

HI,

I found that showcaseview is very suitable in a dark background app.

When I use it in a light background app, the presentation is in a mess.

Do you have any suggestions?

Thanks

Circle for actionbar item radio is too big

Hi,

The circle around an actionbar menu item is too big by default and usually it include more than item inside, if my actionbar is displaying more than one menu item icon. Is there an easy way to reduce the radio so only the target action item is included?

Thanks

M

VITs (Very Important Tests)

There are no tests, the ShowcaseView.java file is enormous and so everything is difficult to test in the first place, and the library should have tests so pull requests don't break stuff.

Problem with the shipped build.gradle

I tried to include this library in a project of mine but several problems have arise.

Since I'm not an expert of gradle's build file and the changes are minimal I only paste the configuration that works for me and I'd love to have feedback.

// this section added for easy inclusion in external project
buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    // latest Android Studio require this version
    classpath 'com.android.tools.build:gradle:0.6.+'
  }
}

apply plugin: 'android-library'

dependencies {
    // without this the nineoldandroids library is not found
    repositories {
        mavenCentral()
    }
    compile 'com.android.support:support-v4:18.0.+'
    compile 'com.nineoldandroids:library:2.4.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

With the original configuration the common error was

Cannot add task ':showcase:uninstallAll' as a task with that name already exists.

and I'm curious to know why this problem happens.

Button can be hidden on small devices

I use
ShowcaseView sv4 = new ShowcaseView(this);
sv4.setHorizontalScrollBarEnabled(true);
sv4.setHorizontalFadingEdgeEnabled(false);

    ShowcaseView.ConfigOptions co4 = new ShowcaseView.ConfigOptions();      
    co4.hideOnClickOutside = false;

but ScrollBar not appear on screen.

Not using hardware acceleration

We're currently using software rendering because:

  • Using bitmaps with canvases when drawing introduces memory issues
  • Using canvases on their own with h/a doesn't draw stuff properly

This results in bad performance of the library - something we don't want.

In example (and my own) project setShowcasePosition generates a null exception.

Example source code project modification:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        sv = (ShowcaseView) findViewById(R.id.showcase);
        sv.setShotType(ShowcaseView.TYPE_NO_LIMIT);
        sv.setShowcasePosition(0.2f, 0.2f);
       // sv.setShowcaseView(findViewById(R.id.button));

        sv.setOnShowcaseEventListener(this);
        (button = (Button) findViewById(R.id.button)).setOnClickListener(this);
    }

Generates this error:

08-24 16:15:31.300: ERROR/AndroidRuntime(3746): FATAL EXCEPTION: main
        java.lang.NullPointerException
        at com.espian.showcaseview.ShowcaseView.dispatchDraw(ShowcaseView.java:181)
        at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
        at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
        at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
        at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
        at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
        at android.view.View.draw(View.java:10981)
        at android.widget.FrameLayout.draw(FrameLayout.java:450)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:2026)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
        at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        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:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

How to do a pinch gesture using the ghostly hand?

This library is great! In some apps I saw the ghostly hand doing a pinch gesture to tell the users that they can pinch to zoom in certain views. I wonder if they are using ShowcaseView library and if so how can I create that gesture?

Thanks!

NullPointerException at c.setBitmap() in dispatchDraw()

FATAL EXCEPTION: main
java.lang.NullPointerException
at android.graphics.Canvas.setBitmap(Canvas.java:143)
at com.espian.showcaseview.ShowcaseView.dispatchDraw(ShowcaseView.java:190)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
at android.view.View.draw(View.java:6883)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1921)
at android.view.ViewRoot.draw(ViewRoot.java:1526)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1262)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1863)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
at dalvik.system.NativeStart.main(Native Method)

Button size

Im having trouble setting the site of the "OK" button, ive set top and bottom padding to 0 but its still the same height.

Custom styles not overriding

When looking at how to override the styles of the view (as per the sample app) when implemented in my own, nothing changes. The only way to change the style is to actually edit it inside the library. Not sure what the issue is.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.