Code Monkey home page Code Monkey logo

materialshowcaseview's Introduction

Looking for collaborators to help maintain this library, drop me a line at [email protected] if you want to help.

MaterialShowcaseView

A Material Design themed ShowcaseView for Android

This library is heavily inspired by the original ShowcaseView library.

Since Google introduced the Material design philosophy I have seen quite a few apps with a nice clean, flat showcase view (the Youtube app is a good example). The only library out there however is the original one. This was a great library for a long time but the theming is now looking a bit dated.

Logo

Animation

Gradle


jitpack

Add the jitpack repo to your your project's build.gradle at the end of repositories Why?

/build.gradle

allprojects {
	repositories {
		jcenter()
		maven { url "https://jitpack.io" }
	}
}

Then add the dependency to your module's build.gradle:

/app/build.gradle

compile 'com.github.deano2390:MaterialShowcaseView:1.3.7'

NOTE: Some people have mentioned that they needed to add the @aar suffix to get it to resolve from JitPack:

compile 'com.github.deano2390:MaterialShowcaseView:1.3.7@aar'

How to use


This is the basic usage of a single showcase view, you should check out the sample app for more advanced usage.

	// single example
	new MaterialShowcaseView.Builder(this)
		.setTarget(mButtonShow)
		.setDismissText("GOT IT")
		.setContentText("This is some amazing feature you should know about")
		.setDelay(withDelay) // optional but starting animations immediately in onCreate can make them choppy
		.singleUse(SHOWCASE_ID) // provide a unique ID used to ensure it is only shown once
		.show();
                
                
                
                
	// sequence example            
	ShowcaseConfig config = new ShowcaseConfig();
	config.setDelay(500); // half second between each showcase view

	MaterialShowcaseSequence sequence = new MaterialShowcaseSequence(this, SHOWCASE_ID);

	sequence.setConfig(config);

	sequence.addSequenceItem(mButtonOne,
		"This is button one", "GOT IT");

	sequence.addSequenceItem(mButtonTwo,
		"This is button two", "GOT IT");

	sequence.addSequenceItem(mButtonThree,
		"This is button three", "GOT IT");

	sequence.start();
                

Why Jitpack


Publishing libraries to Maven is a chore that takes time and effort. Jitpack.io allows me to release without ever leaving GitHub so I can release easily and more often.

Apps using MaterialShowcaseView


Learning Resources

https://medium.com/@yashgirdhar/android-material-showcase-view-part-1-22abd5c65b85

https://1bucketlist.blogspot.com/2017/03/android-material-showcase-view-1.html

https://blog.fossasia.org/tag/material-showcase-view/

License


Copyright 2015 Dean Wild

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

materialshowcaseview's People

Contributors

aureleoules avatar cesarsk avatar colinrtwhite avatar cs-chs-admin avatar deano2390 avatar foresttree avatar glnix avatar iambalu avatar limdale avatar madeinqc avatar majeddh avatar narutosanjiv avatar noordawod avatar p-v avatar ricardorsousa avatar sridhar-nalam avatar toboehmk avatar turing-tech avatar yashasvigirdhar 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

materialshowcaseview's Issues

Multiple ideas

Hi,
First of all, thank you for your work ! Here are some possible improvements that I can think of:

  • Add an optional "Skip" button that skips all the showcases in a sequence.
  • Add a nice graphic visual (colored dots for example) showing the current view position in a sequence.
  • Add predefined targets (home button, actionbar/toolbar title etc.)
  • Add optional shapes (I think that this one is already in the roadmap)
  • Prevent touch event between two MaterialShowCaseView (add a transparent view that catch the touch events) (I think that this one is already in the roadmap as well)

Regards,
Thomas

Problems/Suggestions

Instead of writting more posts I summurize my ideas, feel free to ignore them...

PROBLEMS

  • MaterialShowcaseSequence is prone to errors, as it can happen that the user touches the layout underneath while going from one Showcase to another... Can be solved if I add a transparent view underneath that consumes all touches and is removed after the sequence is finished
  • before creating a new bitmap, check if the bitmap != null and recycle it... I already had a memory problem and I suppose that's the cause. Although I've not investigated that to much yet... I don't know if canvas.drawRect is better than creating a bitmap for the color background, but probably it is. But I'm not sure. So you could get rid of the bitmap...

SUGGESTION

  • I personally would like to have more possibilities to highlight the targets. I would suggest a circle and a rectangle (with adjustable borders?)
  • Maybe some navigation like next/previous? And the possibility to add a "Don't show again" button at the end of a sequence?
  • in a sequence a transformation animation between Showcases would look nice in my opinion...

PS: busy day for you because of all my "issues" ;-)

C:\Program Files\Java\jdk1.7.0_79\bin\java.exe finished with non-zero exit value 2

As you can see from title I am receiving exit value 2 when trying to compile the project with library:

Error:Execution failed for task ':app:dexDebug'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 2

I have jitpack in repositories, as you can see:

apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion '22.0.1'

defaultConfig {
    applicationId "com.example.marian.digimusicstream"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"

// multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

repositories {
maven {
url "https://jitpack.io"
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('org.restlet.jse:org.restlet.ext.httpclient:2.1.2') {
exclude group: 'org.restlet', module: 'jse'
exclude group: 'org.restlet.ext', module: 'ss1'
}
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/services/org.restlet.engine.ClientHelper'
}
}
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'net.koofr:java-koofr:1.2.8'
compile 'org.apache.httpcomponents:httpclient:4.3.5'
compile 'org.restlet.jse:org.restlet.ext.jackson:2.1.2'
compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.3'
compile 'com.rengwuxian.materialedittext:library:1.8.3'
compile 'com.github.navasmdc:MaterialDesign:1.5@aar'
compile 'com.google.android.gms:play-services:7.0.0'
compile 'com.android.support:recyclerview-v7:22.0.+'
compile 'com.baoyz.pullrefreshlayout:library:1.0.1'
compile('com.mikepenz:materialdrawer:3.1.2@aar') {
transitive = true
}
compile 'com.wnafee:vector-compat:1.0.5'
compile 'me.drakeet.materialdialog:library:1.2.2'
// compile 'com.google.code.gson:gson:2.2.+'
compile 'com.sothree.slidinguppanel:library:3.1.1'
compile 'com.github.deano2390:MaterialShowcaseView:1.0.5@aar'
}

ShowCaseView in ListView problem

Hey, I tried to use MaterialShowCase on an item located in a listView. It works but the overlay dose not cover the entire screen.
Are you familiar with a solution I can try?
screenshot_20160209-105712

After 1.0.5 , Lollipop Nav bar Issue

After Update , in lollipop
Some white space coming at the bottom, after some research (TESTED In NEXUS7)
After comment this lines , works perfectly

        /**
         * If we're on lollipop then make sure we don't draw over the nav bar
         */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mBottomMargin = getSoftButtonsBarSizePort((Activity) getContext());
            FrameLayout.LayoutParams contentLP = (LayoutParams) getLayoutParams();

            if (contentLP != null && contentLP.bottomMargin != mBottomMargin)
                contentLP.bottomMargin = mBottomMargin;
        }

Allow custom view

We should be able to specify a custom view to render instead of the default 2 textviews

Background is not Showing on Total Screen in Android Lollipop

Hi

Thanx for the cool ibrary. I am using this library but I have issue

on the lollipop device background is not showing on total screen..Some bottom part is remain uncovered by the backgound color but on other device it is working perfectly.

Can you please tell me what I am missing there??

I think there is issue with soft bottom key and physical bottom key's.

Beacuse It is working fine for physical Bottom Key's and activity gets cut for soft bottom key.

Allow null target

First of all, Great library!

Currently if target is not specified The LinearLayout of the contentView and nextView has default gravity of top. also the target circle is visible (with borders outside of the screen)
When trying to create a sequence without target there is a null pointer exception (on `getPoint')

Can you please add a fix to allow a simple message with next button (centered maybe) without the target to allow general information onboarding in the context of the showcase?

Thanks,
Roy

Public check method for singleUse id

This would make it possible to return from a function before all the unnecessary builder stuff is done...

As retrieving the views, which may be useless if I don't want to show the Showcase afterwards...

reduce circle radius

I'm focusing on a listview. However, i would like to reduce the radius of the circle. how should i go about achieving that?

NPE in notifyOnDisplayed()

Some users get NPE in notifyOnDisplay().

Listeners sets null in notifyOnDismissed() but I can not find why notifyOnDisplayed() called after setting null.

Fatal Exception: java.lang.NullPointerException
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView.notifyOnDisplayed(MaterialShowcaseView.java:197)
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView.access$1400(MaterialShowcaseView.java:33)
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView$2.onAnimationStart(MaterialShowcaseView.java:634)
       at uk.co.deanwild.materialshowcaseview.AnimationFactory$1.onAnimationStart(AnimationFactory.java:31)
       at android.animation.ValueAnimator.notifyStartListeners(ValueAnimator.java:903)
       at android.animation.ValueAnimator.start(ValueAnimator.java:939)
       at android.animation.ValueAnimator.start(ValueAnimator.java:946)
       at android.animation.ObjectAnimator.start(ObjectAnimator.java:465)
       at uk.co.deanwild.materialshowcaseview.AnimationFactory.fadeInView(AnimationFactory.java:46)
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView.fadeIn(MaterialShowcaseView.java:629)
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView$1.run(MaterialShowcaseView.java:600)
       at android.os.Handler.handleCallback(Handler.java:733)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5021)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
       at dalvik.system.NativeStart.main(NativeStart.java)

Special characters are not shown

i am using special characters (German "Umlaute") in the text-parameter for setContentText.
unfortunately those ones are not shown, i get some strange characters instead. any idea how i can fix this? thanks!

Reset all Showcases at once

Is it possible to reset all showcases at once?

MaterialShowcaseView.resetSingleUse wraps a private PrefsManager and I think the PrefsManager should be extended with

 static void resetShowcases(Context context) {
    SharedPreferences internal = context.getSharedPreferences("material_showcaseview_prefs", 0);
    internal.edit().clear().commit();
}

and the MaterialShowcaseView should offer a function that calls this function

Detect if material showcase is running

is there a possibility to detect if a showcase is running?
i will, depending on the value of a pref, start a showcase sequence after an activity is created.
some activities will show tooltips, so i have to postpone showing the tooltips until the last showcase view is closed.
is this possible? thanks!

Dismiss ShowCaseView with click anywhere

I couldn't find a way to allow the user to dismiss the showcase by clicking anywhere on the screen or add a button to stop showing forever the showcase view.

Width and height must be > 0

I got enough crash to make me post this issue.

Fatal Exception: java.lang.IllegalArgumentException: width and height must be > 0
       at android.graphics.Bitmap.createBitmap(Bitmap.java:933)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:912)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:879)
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView.onDraw(MaterialShowcaseView.java:140)
       at android.view.View.draw(View.java:16068)
       at android.widget.FrameLayout.draw(FrameLayout.java:592)
       at android.view.View.updateDisplayListIfDirty(View.java:14999)
       at android.view.View.getDisplayList(View.java:15022)
       at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3662)
       at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3641)
       at android.view.View.updateDisplayListIfDirty(View.java:14959)
       at android.view.View.getDisplayList(View.java:15022)
       at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:275)
       at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:281)
       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:320)
       at android.view.ViewRootImpl.draw(ViewRootImpl.java:2741)
       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2573)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2165)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6558)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
       at android.view.Choreographer.doCallbacks(Choreographer.java:590)
       at android.view.Choreographer.doFrame(Choreographer.java:560)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:145)
       at android.app.ActivityThread.main(ActivityThread.java:5832)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

Please take a look,,

How to reset ID.

I want to give the option for the user to show the tutorial again if he wants. From what I understood I would have to remove the IDs from the place they are stored. Is there a good way to do that?

Orientation not handled

Orientation not handled , the hightlighted white clear area goes acoording to previous position

gradle not found

buildscript {
    repositories {
        mavenCentral()
        jcenter() 
        maven { url "https://jitpack.io" }
    }
}

and

compile 'com.github.deano2390:MaterialShowcaseView:1.0.2'

or

compile 'com.github.deano2390:MaterialShowcaseView:1.0.2@aar'

and even then it was not found

Old version when compiling from gradle

When I compile this library from gradle I don't have latest version and some functionalities. I compared code witch compiles in my project with code here and there are differences. You should check it. Probably its giving me library from wip branch not from master.

Showcase view cuts off on a full screen activity

Nice library.

My activity is full screen, meaning I hide the status bar and navigation bar. When using the showcase view, it doesn't draw on top of the space for navigation bar, though overlays the status bar just fine.

Any suggestions?
Much appreciated!

Edit: I should mention that I am testing it on a Nexus device which uses the navigation bar.

wrong place

I added the view of FloatingActionButton and was wrong, any tips on how to fix?

screen shot 2015-08-19 at 2 10 51 pm

Support custom views

Is there any desire to support custom views rather than just having a TextView controllable via a Builder? I have forked the repository and made some changes (not yet pushed) to support a custom Builder method (.setView(View v)) to allow the user to provide their own custom View to be displayed in front of the mask and under/above the Highlight Circle/Rectangle, instead of the TextView.

In addition I also added the option for a "pointer" (e.g. a triangle drawable) that bridges the Highlight to the custom view. If there is any interest in adding this functionality, I can clean my code up to make it more extensible rather than just fitting my use case and submit a pull request. However it looks like this library has been mostly abandoned (last comment by the owner last October), so I figured I would ask first.

OutOfMemoryError in MaterialShowcaseView.onDraw

Hey,

first off, thanks for the lib, it's really useful not having to develop something like this from scratch.

Now onto the problem. I'm using this in an app and seem to be getting quite a lot of OutOfMemoryErrors in the wild, with the following stack trace:

java.lang.OutOfMemoryError: Failed to allocate a 8294412 byte allocation with 417014 free bytes and 407KB until OOM
       at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:939)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:912)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:879)
       at uk.co.deanwild.materialshowcaseview.MaterialShowcaseView.onDraw(MaterialShowcaseView.java:140)
       at android.view.View.draw(View.java:16060)
       at android.widget.FrameLayout.draw(FrameLayout.java:592)
       at android.view.View.updateDisplayListIfDirty(View.java:14991)
       at android.view.View.getDisplayList(View.java:15014)
       at android.view.View.draw(View.java:15781)
       at android.view.ViewGroup.drawChild(ViewGroup.java:3677)
       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3471)
       at android.view.View.draw(View.java:16063)
       at android.widget.FrameLayout.draw(FrameLayout.java:592)
       at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2916)
       at android.view.View.updateDisplayListIfDirty(View.java:14991)
       at android.view.View.getDisplayList(View.java:15014)
       at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:275)
       at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:281)
       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:320)
       at android.view.ViewRootImpl.draw(ViewRootImpl.java:2741)
       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2573)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2165)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6558)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
       at android.view.Choreographer.doCallbacks(Choreographer.java:590)
       at android.view.Choreographer.doFrame(Choreographer.java:560)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:145)
       at android.app.ActivityThread.main(ActivityThread.java:5832)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

These happen mostly on the Samsung Galaxy S3, Note 2 and some on the Galaxy S5 even. The background bitmap just gets too big to fit into the available memory.

MaterialShowcaseView rendered behind DialogFragment

Hey there, great Library so far but I have a problem wich im not able to fix myself.
I have a custom DilaogFragment in my App and I'm trying to display a showcaseView on it, but it is always render behind the dialog window (the blue tint around the dialog view).

photo_2015-12-11_15-48-09

I tried to bring the view to the front using

MaterialShowcaseView materialShowcaseView = new MaterialShowcaseView.Builder(getActivity())
     {...}
materialShowcaseView.bringToFront();
materialShowcaseView.show(getActivity());

and executing the code in a .post(Runnable {}) method but it is still rendered behind the Dialog.
Any ideas how I could possibly fix this?

My project is available at https://github.com/Power-Switch/PowerSwitch_Android
and the specific classes I'm talking about are ConfigureReceiverDialog and ConfigureReceiverDialogPage1NameFragment

Disable touch events between sequential showcase views

When using a sequence of showcase views it is possible for the user to quickly touch UI elements in the underlying screen and potentially cause issues.

Touch events should be disabled on the underlying view until the whole sequence has finished

Customizable text formatting

Sometimes it's nice to use spannables, html or even a custom view as content in a Showcase.

Html is quite easy and android as well allows very basic html tags in xml resources, like <b> for example. But therefore an TextViews text must be set with context.getText(res) instead of context.getString(res)... And following example shows how to use html (by reflection though, as that's what I currently use for it):

resource

<string name="tut"><![CDATA[<b>Bold text</b>... normal text]]></string>

code

MaterialShowcaseView showcaseView = builder.build();

    Field field = null;
    try {
        field = MaterialShowcaseView.class.getDeclaredField("mContentTextView");
        field.setAccessible(true);
        TextView textView = (TextView)field.get(showcaseView);
        textView.setText(Html.fromHtml(activity.getString(content)));
    } catch (NoSuchFieldException e) {
        L.e(TutorialManager.class, e);
    } catch (IllegalAccessException e) {
        L.e(TutorialManager.class, e);
    }

Just wanted to tell you this idea, for myself, I'm content with my workaround

Set target point manually

I've a full width CheckedTextView and when highlighting it I would like to highlight the checkbox for example. I can set the radius manually, that's already nice. But I would need to set the relative position of the circle to it's view as well.

I can't do that right now, can I?

Anything planned in this direction? Setting a gravity would maybe also fulfill most of the usecases, offering left, right, top, bottom, center would be enough for me. Although, setting the point manually is more flexible.

handle case where view is offscreen

If the view is wrapped in a scrollable container it would be necessary to make the view visible.

An easy solution would be to draw an arrow (instead of the circle) to the top, bottom, left or right of the screen and center the text on screen... (Just some idea that came to my mind)

Currently, the circle and the text will be positioned offscreen...

Dismiss the ShowcaseView

I am unable to Dismiss the ShowCaseView in following case
Showing the ShowcaseView In baseadapter here i am not cancel the View and click back button to goto the fragment .here ShowcaseView is still visible .I want to cancel the View in this case please let me know how to cancel the view.

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.