GithubHelp home page GithubHelp logo

skittles's Introduction

#Skittles Android Arsenal Build Status Jcenter JitPackv

A simple,clean api for adding PushBullet style skittles to your app for more material design glory.This library uses the FloatingActionButton provided in the android design support library

##Guide (Sample)

First some housekeeping code:

Use SkittleLayout as a root view in your layouts

<snow.skittles.SkittleLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/skittleLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:mainSkittleColor="@color/material_deep_teal_500"
app:mainSkittleIcon="@drawable/ic_android_white_18dp"
tools:context=".MainActivity">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/appBarMaxHeight"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
...

</snow.skittles.SkittleLayout>

Some further housekeeping...

Declare a SkittleBuilder,used to add skittles and pass the root SkittleLayout to it

SkittleLayout skittleLayout = (SkittleLayout) findViewById(R.id.skittleLayout);
//Pass false as the second param if you don't want the menu to be closed on screen tap
SkittleBuilder skittleBuilder = SkittleBuilder.newInstance((SkittleLayout) findViewById(R.id.skittleLayout), true);

Now for the fun part

Add skittles to your activity/fragment

skittleBuilder.addSkittle(Skittle.newInstance(ContextCompat.getColor(this, R.color.barratheon),
        ContextCompat.getDrawable(this, R.drawable.barratheon_icon)));
skittleBuilder.addSkittle(Skittle.newInstance(ContextCompat.getColor(this, R.color.lannister),
        ContextCompat.getDrawable(this, R.drawable.lannister_icon)));

Add TextSkittle to your activity/fragment

 skittleBuilder.addSkittle(new TextSkittle.Builder("Hello", ContextCompat.getColor(this, R.color.stark),
            ContextCompat.getDrawable(this, R.drawable.stark_icon)).setTextBackground(
            ContextCompat.getColor(this, android.R.color.background_light)).build());

Flexible callback for clicks:

  • Add a click listener(SkittleBuilder.SkittleClickListener) to the SkittleBuilder object skittleBuilder.setSkittleListener(this);

  • This exposes two methods for Skittle and MainSkittle click events

void onSkittleClick(BaseSkittle skittle, int position); 

void onMainSkittleClick();

BaseSkittle is an interface that every skittle implements

public void onSkittleClick(BaseSkittle skittle, int position) {
  if(skittle instanceOf TextSkittle)
   ...
  else if(skittle instanceOf Skittle)
   ...
}

Here the position does not include the mainSkittle and starts from 0

You can now create your very own Skittle you just have to implement the BaseSkittle, check TextSkittle or Skittle for further reference

##Snackbar Support

When using snackbars ensure that you use SkittleContainer

Snackbar.make(skittleLayout.getSkittleContainer(), "Skittle Pressed", Snackbar.LENGTH_LONG)
.show();

##Gradle

dependencies{
compile 'com.rlj.library:skittles:4.1.1'
}

See the Sample and JavaDoc for further guidance

##Upcoming

  • Better support for animations
  • Option for adding skittles by xml (inspired by Navigation View)

#Taste the rainbow ![Skittles](art/Taste the rainbow.jpg)

skittles's People

Contributors

aashrai avatar kamilski81 avatar ligi 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

skittles's Issues

CloseMenu() method?

Hi, it's me again.
I have noticed that when I launch an acitvity from a skittle and then go back, the menu is still open. Would be useful to have a way to force the menu to close.

Hiding push bullets

Is there any way to programatically hide bullets? There is no easy to find option and nothing mentioned in readme

Color flexibilty

Provide methods for changing the color of the skittle dynamically and which accepts all typed of color resources ,in response to #4

how to import builder?

i cant find how to import builder in your sample app
android studio doesnt recognize this
skittleBuilder = new SkittleBuilder.Builder(this, skittleLayout)
.mainSkittleColor(Color.GREEN)
.mainSkittleIcon(R.drawable.ic_android_white_18dp)
.build();

ArrayIndexOutOfBoundsException

with wild clicking on the skittle example I could produce this crash on emulator sdk 23 with last commit on masterr 3d6cf49:

02-17 04:42:13.868  2884  2884 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at java.util.ArrayList.get(ArrayList.java:310)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at snow.skittles.SkittleAdapter$SkittleViewHolder.onClick(SkittleAdapter.java:160)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at android.view.View.performClick(View.java:5198)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at android.view.View$PerformClick.run(View.java:21147)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at android.os.Handler.handleCallback(Handler.java:739)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:95)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:148)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:5417)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
02-17 04:42:13.868  2884  2884 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
02-17 04:42:13.869  1588  1968 W ActivityManager:   Force finishing activity snow.skittlessample/.MainActivity3

Make the Skittle Container a Recycler View

Currently the skittle container is a linear layout which does its job but makes things such as spacing and animations a pain, if we want to make the library more customizable recycler view is the way to go,

Lollipop+ Support

Need to see how the lib looks in lollipop can someone post screenshots, i suspect there are some bugs

Add Support for creating custom Skittles

Right now you can create your own skittle but the RecyclerView Adapter doesn't know what to do with them, need to create a way to let others create their own ViewHolders.

null object reference

java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v7.widget.RecyclerView$Adapter snow.skittles.SkittleContainer.getAdapter()' on a null object reference

Layout issues with TextSkittle

Icon-Only skittles work fine but when using one with text there are 2 problems:

skittles_problem

a) the shadow is cropped
b) the text is not centered vertically

with this code:

  final SkittleBuilder builder = new SkittleBuilder.Builder(this, fam)
                .mainSkittleColor( R.color.accent)
                .build();


        builder.makeTextSkittle("foo",R.drawable.ic_action_bulb).add();

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.