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

Related tags

App 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...
📱 AppListManager (Android Library) makes managing application and activity lists easy.
📱 AppListManager (Android Library) makes managing application and activity lists easy.

AppListManager (Android Library) AppListManager is easy to use Android library, which minimizes developing time when working on application or activit

📺 A sample app to showcase Twyper with GitHub repo search API
📺 A sample app to showcase Twyper with GitHub repo search API

swipe-search A sample app to showcase Twyper with GitHub repo search API 📺 Demo Screen.Recording.2022-02-20.at.9.36.10.PM.mov 📚 Tech Stack What How

A 2020s compatible React Native keyboard avoiding view for Android and iOS that just works.

react-native-keyboard-shift Example Snack coming soon Until then: Clone this repo: git clone https://github.com/FullStackCraft/react-native-keyboard-s

A Kotlin Mindustry mod that works on Android and PC

Mindustry Kotlin Mod Template A Kotlin Mindustry mod that works on Android and PC. This is equivalent to the Java version, except in Kotlin. Building

SyncPlay - The unofficial Syncplay client for Android. Works with the Desktop version of Syncplay

About SyncPlay BETA: The unofficial Syncplay client for Android. Works with the

The unofficial Syncplay client for Android. Works with the Desktop version of Syncplay !

SyncPlay BETA: About Syncplay BETA: This is the UNOFFICIAL Syncplay client for Android. If you don't know Syncplay, have a look here: https://syncplay

Let third-party launcher always get themed icon in MIUI (Maybe also works for other Android based OS).
Let third-party launcher always get themed icon in MIUI (Maybe also works for other Android based OS).

English 简体中文 Introduction This module can let third party launcher always use icons with MIUI/Flyme Themes. It may also work with other custom Android

Works Planning Application
Works Planning Application

Works Planning Application Clean Architecture MVVM Room database Binding Adapters Data Binding View Binding RecyclerView.Adapter DiffUtil LiveData Vie

A rewrite of the popular project GitUp that works in Linux, Mac, and Windows.
A rewrite of the popular project GitUp that works in Linux, Mac, and Windows.

GitDown This is a rewrite from the ground up of the popular GitUp library available on Mac. It is built using Kotlin and Compose Desktop from Jetbrain

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
An Android app that pulls the credit score information from a given endpoint and displays the records as a donut view

ClearScoreTest This is an Android app that pulls the credit score information fr

Abayomi Akanji 1 Jan 13, 2022
Forage-project - This is a project given by Google Android Developers team. It's specifically created for data persistance.

Forage - Starter Code Starter code for the fifth independent project for Android Basics in Kotlin. This project pairs with Unit 5 of Android Basics in

Espérant GADA 0 Jan 2, 2022
An Android app that gives you a password generated by a given phrase with a custom algorithm, it also has password and biometric security.

An Android app that gives you a password generated by a given phrase with a custom algorithm, it also has password and biometric security.

Marcos Ariel Paccor 1 May 23, 2022
A simple Discord bot that aims to provide a snapshot of the join logs given a range of time for servers.

?? What is Humpy Dumpy? Humpy Dumpy is a simple Discord bot that aims to provide a snapshot of the join logs given a range of time for servers. It was

Miu 2 Aug 29, 2022
📲💬 react-native-fontext is a lightweight library to integrate fonts in your React Native application that works seamlessly in android and iOS devices.

React Native Fontext react-native-fontext is a lightweight library to integrate fonts in your React Native application that works seamlessly in androi

mroads 9 Dec 3, 2021
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
Abel Suviri 6 Dec 16, 2022
A showcase music app for Android entirely written using Kotlin language

Bandhook Kotlin This project is a small replica of the app I developed some time ago. Bandhook can still be found on Play Store At the moment it will

Antonio Leiva 1.9k Dec 23, 2022
Popular Movies showcase android app

Pop Flix PopFlix is a gorgeous client application for TMDb on Android, built using Kotlin. Architecture and Tech-stack Built on MVVM architecture patt

Vishvendra Singh 5 Jun 7, 2022
An simple image gallery app utilizing Unsplash API to showcase modern Android development architecture (MVVM + Kotlin + Retrofit2 + Hilt + Coroutines + Kotlin Flow + mockK + Espresso + Junit)

Imagine App An simple image gallery app utilizing Unsplash API. Built with ❤︎ by Wajahat Karim and contributors Features Popular photos with paginatio

Wajahat Karim 313 Jan 4, 2023