RoboDemo is a ShowCase library for Android to demonstrate to users how a given Activity works.

Related tags

Demo RoboDemo
Overview

RoboDemo

RoboDemo is a ShowCase library for Android to demonstrate to users how a given Activity works.

A sample is available in the download area of the repository.

RoboDemo is not maintained anymore. It works but you may find more convenient to use a maintained library in : https://github.com/amlcurran/ShowcaseView

Screenshots

Here is an example (from the sample application) :

Activity under showcase   Activity showcase animation step 1   Activity showcase animation step 2

From left to right :

  1. activity under show case
  2. activity showcase, first step of animation
  3. activity showcase, second & final step of animation

Overview

There are some cases where applications require more complex interactions from users, or new interactions not covered by Android UI Guidelines.

RoboDemo eases creating showcases / explaining / demonstrating of such activities to users. It will display an overlay activity to illustrate the Activity under showcase. The explanations consist of a serie of points to click on and their associated labels. The Activity under showcase is dimmed and the showcase highlights transparent areas to point views or positions users have to click.

Creation of DemoActivity is straightforward, have a look at the sample to put in place RoboDemo in your own app :

  1. create a DemoActivity, using a custom DrawAdapter
  2. in the Activity undershowcase, pass views or coordinates and their associated labels.

RoboDemo has been designed to be convinient.

To learn more, visit RoboDemo Starter Guide and browse RoboDemo Javadocs online.

Customization

RoboDemo can be customized in different ways :

  • using a custom drawable
  • using transparency or not to highlight the areas to click on
  • using custom Paint to render labels, and the area under labels
  • using custom drawable and text locations
  • and some more for sure...

To learn more, visit RoboDemo Starter Guide and browse RoboDemo Javadocs online.

Know limitations

The base class for DemoActivity is based on android.app.Activity. Unfortunately, this can't cover all inheritance cases for projects based on ActionBarSherlock or RoboGuice or a custom Activity base class per project.

In that case, we recommend using all classes from the library as well but rewrite your own DemoActivity changing only its super class.

In the case you use ActionBarSherlock, check the code comments, they will give you hints to support ActionBarSherlock themes.

Modules

  • a library that can be used inside Eclipse (with or without m2e)
  • a sample application

Configuration

  • In maven : just deploy the library in your nexus, and copy sample configuration
  • In Eclipse :
    • Without m2e : unzip the library in the same workspace as your project, and use the library as an android library
    • With m2e : unzip the library in the same workspace as your project, and copy dependencies in the pom.xml file of the sample

License

Copyright 2012 Stéphane NICOLAS

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.

History

RoboDemo has been initiated during a project for Octo Technology as we implemented an Activity in which user had to move files in the filesystem. This kind of interaction is finally unusual in android and almost every file explorer app uses its custom workflow to achive it.

We decided to implement some kind of tutorial to explain our idea (basically, inspired from OI File Manager).

We asked a question about it on Stack Over Flow and were redirected to Espiandev / ShowcaseView. We finally decided to use our own solution, and it became a lib in September 2012 : RoboDemo.

Alternative

You can also visit Espiandev / ShowcaseView. This project is mature and clean as well. It provides a "native" feeling of tutorial for apps.

RoboDemo in the News !!

You might also like...
RxJava architecture library for Android
RxJava architecture library for Android

Reference Architecture for Android using RxJava This is an ambitious reference project of what can be done with RxJava to create an app based on strea

an easy to use android library to let devs know how much internet-data their app is consuming
an easy to use android library to let devs know how much internet-data their app is consuming

EasyAnalytics! an easy to use android library to let developers know how much internet-data their app is consuming. We can identify this as we want ba

 Non-official Library Genesis (Libgen) Android mobile client.
Non-official Library Genesis (Libgen) Android mobile client.

Aurora If my noble work has helped you, consider becoming a . This is a non-official Library Genesis mobile client. The project is completely independ

🎥 Android App using Kotlin, MVVM, ViewModel and LiveData, RxJava, Retrofit, REST API, OkHttp, Gson, Glide, Paging library and Material Design. In the app you can see a list of popular movies and additional info about every movie.
🎥 Android App using Kotlin, MVVM, ViewModel and LiveData, RxJava, Retrofit, REST API, OkHttp, Gson, Glide, Paging library and Material Design. In the app you can see a list of popular movies and additional info about every movie.

Movies 🎥 Android App using Kotlin, MVVM, ViewModel and LiveData, RxJava, Retrofit, REST API (https://www.themoviedb.org), OkHttp, Gson, Glide, Paging

Create curve bottom navigation using this library
Create curve bottom navigation using this library

Curve Bottom Bar Download Add it to your build.gradle with: allprojects { repositories { maven { url "https://jitpack.io" } } } and: d

SquircleView is a library which provides you with Squircle views to use for buttons, views, etc.
SquircleView is a library which provides you with Squircle views to use for buttons, views, etc.

SquircleView SquircleView is a library which provides you with Squircle views to use for buttons, views, etc. Screenshots Different kinds of buttons,

This is a repository for implementing Brontodroid and test it easily before we finalize things into a library/module to be consumed separately.

Bronto Playground This is a repository for implementing Brontodroid and test it easily before we finalize things into a library/module to be consumed

Quality-Tools-for-Android 7.5 0.0 L5 Java This is an Android sample app + tests that will be used to work on various project to increase the quality of the Android platform.
Quality-Tools-for-Android 7.5 0.0 L5 Java This is an Android sample app + tests that will be used to work on various project to increase the quality of the Android platform.

Quality Tools for Android This is an Android sample app + tests that will be used to work on various project to increase the quality of the Android pl

simple android grocery app using kotlin and android studio
simple android grocery app using kotlin and android studio

Project Idea The idea of this project is to make a grocery android app that users can use to order the groceries they want. It doesn't contain any bac

Comments
  • LabeldPoint position is fixed

    LabeldPoint position is fixed

    I have used

    LabeledPoint p = new LabeledPoint( b, "Events: This is where all events and check-in happen" ); arrayListPoints.add( p ); p = new LabeledPoint(this,0.95f, 0.05f,"Use the Menu"); arrayListPoints.add( p );

    Where b is a button;

    but all my demo labeled points are defaulted to left hand side top corner of my activity what i'm a doing wrong. Edit : calling my displaydemo in my onStart then also tried in oncreate

    the "use the menu" is correct in its position, now for the fun part of this issue or my mistake:

    when i inflate the overflow menu in my class with show demo again called its position is spot on

    Please help

    opened by aldefy 2
  • RoboDemo Starter Guide

    RoboDemo Starter Guide

    RoboDemo Starter Guide

    There are 3 steps to follow to add RoboDemo into your project :

    • Create a RoboDemo sublcass like this, providing a DrawViewAdapter
    public class MainActivityDemoActivity extends DemoActivity {
        private static final int DEFAULT_FONT_SIZE = 22;
    
        @Override
        public DrawViewAdapter getDrawViewAdapter() {
            Drawable drawable = getResources().getDrawable( R.drawable.ic_lockscreen_handle_pressed );
            TextPaint textPaint = new TextPaint();
            textPaint.setColor( getResources().getColor( android.R.color.white ) );
            textPaint.setShadowLayer( 2.0f, 0, 2.0f, getResources().getColor( android.R.color.black ) );
            textPaint.setAntiAlias( true );
            // http://stackoverflow.com/questions/3061930/how-to-set-unit-for-paint-settextsize
            textPaint.setTextSize( TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, DEFAULT_FONT_SIZE, getResources().getDisplayMetrics() ) );
            return new DefaultDrawViewAdapter( this, drawable, textPaint, getListPoints() );
        }
    
    }
    
    • Add this activity to your AndroidManifest, using a predefined theme :
    <activity
                android:noHistory="true"
                android:configChanges="orientation|screenSize"
                android:name=".MainActivityDemoActivity"
                android:theme="@style/Theme.RoboDemo" />
    
    • In your Activity under showcase, prepare to start your DemoActivity, passing it all the points and texts you want to include in the showcase :
     private void displayDemoIfNeeded() {
    
            boolean neverShowDemoAgain = RoboDemo.isNeverShowAgain( this, DEMO_ACTIVITY_ID );
    
            if ( !neverShowDemoAgain && showDemo ) {
                showDemo = false;
                ArrayList< LabeledPoint > arrayListPoints = new ArrayList< LabeledPoint >();
    
                // create a list of LabeledPoints
                LabeledPoint p = new LabeledPoint( clearButton, getString( R.string.text_move_demo_step_1 ) );
                arrayListPoints.add( p );
    
                p = new LabeledPoint( this, 0.95f, 0.05f, getString( R.string.text_move_demo_step_2 ) );
                arrayListPoints.add( p );
    
                // start DemoActivity.
                Intent intent = new Intent( this, MainActivityDemoActivity.class );
                RoboDemo.prepareDemoActivityIntent( intent, DEMO_ACTIVITY_ID, arrayListPoints );
                startActivity( intent );
            }
        }
    

    Customization 

    RoboDemo can be customized in quite a number of ways : 

    • using a custom drawable via the DefaultDrawViewAdapter
    • using transparency or not to highlight the areas to click on, by subclassing DrawView
    • using custom Paint to render text, and the grey area under texts, via the DefaultDrawViewAdapter
    • using custom drawable and text locations, by subclassing DrawViewAdapter
    • and some more for sure...

    Going further

    To learn more, browse RoboDemo Javadocs online.

    opened by stephanenicolas 1
  • Resources$NotFoundException

    Resources$NotFoundException

    hi, in robodemo-sample,when "MainActivityDemoActivity" intends to execute it gives "Unable to start activity android.content.res.Resources$NotFoundException: File res/mipmap-xhdpi-v4/ic_launcher.png from xml type layout resource ID #0x7f030000" message in Logcat

    public class MainActivityDemoActivity extends DemoActivity { private static final int DEFAULT_FONT_SIZE = 22; @Override public DrawViewAdapter getDrawViewAdapter() { Drawable drawable = getResources().getDrawable( R.drawable.ic_launcher); TextPaint textPaint = new TextPaint(); textPaint.setColor( getResources().getColor( android.R.color.white ) ); textPaint.setShadowLayer( 2.0f, 0, 2.0f, getResources().getColor( android.R.color.black ) ); textPaint.setAntiAlias( true ); // http://stackoverflow.com/questions/3061930/how-to-set-unit-for-paint-settextsize textPaint.setTextSize( TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DEFAULT_FONT_SIZE, getResources().getDisplayMetrics()) ); return new DefaultDrawViewAdapter( this, drawable, textPaint, getListPoints() ); } }

    opened by Pakniat 0
  • Small fixes to RoboDemo

    Small fixes to RoboDemo

    Hey I don't use github much, but wanted to get more involved. I made a couple small changes to your project. Let me know what you think?

    Also I have never used maven and was unsure of how to update the apklib.

    opened by ericharlow 0
Owner
Stéphane Nicolas
Open source enthusiast, Java & Linux fan, Android dev. Favorite topics: quality, performance, testability, dependency injection, continuous integration, gradle.
Stéphane Nicolas
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar

#Android-LollipopShowcase This is a simple showcase to show off Android's all new Material Design and some other cool new stuff which is (new) in Andr

Mike Penz 1.8k Nov 10, 2022
Demo app to showcase Sensor data using AIDL bound services.

AIDLServices Displays data related to TYPE_ROTATION_VECTOR sensor using AIDL Consist of aidlsdk module that expose sensor data Sample app to show the

Vikas Mane 3 May 26, 2021
A project which demonstrate how to develop a custom client on android for dribbble.com

##What is this? This is a project with custom client app on android for https://dribbble.com, which you can browse the popular icon and animation, lik

ZhangLei 599 Nov 14, 2022
This repository demonstrate how to draw piexl images on a grid.

520 Compose This repository demonstrate how to draw piexl images on a grid. The screen is divided in to 20 x 24 grids. In each grid, we will draw a co

null 4 Sep 18, 2022
A Demo App which demonstrate the capabilities for BeVigil OSINT demo API

BeVigil-OSINT-Demo A Demo App which demonstrate the capabilities for BeVigil OSINT demo API Functionalities Firebase Authentication

Daniel Dominic 0 May 17, 2022
enable users to slide card to the left or right smoothly and continuously

有图有真相 模仿探探首页的卡片滑动效果: 不得不说,探探的ui效果真的很赞。在着手这个project之前,我没有参考过github上其它类似的开源项目。所以,如果这个project重复造了轮子,请不要打我。 在这个仓库竣工之时,有一个小伙伴发了我另一个开源工程,颇有相似之处。我下载了源码,导入了st

stone 2.4k Jan 5, 2023
RxJava architecture library for Android

Reference Architecture for Android using RxJava This is an ambitious reference project of what can be done with RxJava to create an app based on strea

Reark 2.1k Dec 17, 2022
Sample Project for Android Support Library 23.2

SnapShot: Contains features Vector Drawable Animated Vector Drawable AppCompat DayNight theme Bottom Sheets Using BottomSheetDialog in day-night mode.

Huqiu Liao 779 Nov 24, 2022
Examples for my Android GraphView library

Chart and Graph Library for Android GraphView - open source graph plotting library for Android GraphView is a library for Android to programmatically

Jonas Gehring 297 Dec 16, 2022