Skip to content
This repository has been archived by the owner on May 15, 2023. It is now read-only.

Commit

Permalink
Merge branch 'release-candidate' into stable
Browse files Browse the repository at this point in the history
  • Loading branch information
Miguel Yanez Barreto committed Mar 14, 2017
2 parents ffd14fb + c64efad commit 9c5f3d7
Show file tree
Hide file tree
Showing 97 changed files with 1,365 additions and 562 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# 1.0

- First supported release, yay!
- FirebaseRemoteControllerSync is now completely functional and documented
- Fixed an issue with FirebaseRemoteControllerSync not persisting settings across restarts.
- Added a sharing options drawer to the Remixer UI where the user can choose to share the Remote controller link or disable sharing altogether
- Styling is done!
- Added a more real-looking demo.
- Added the ability to attach the Remixer Fragment to a FAB

# 0.6.6

- Fix Proguarding issue with bad instructions for onboarding.
Expand Down
47 changes: 19 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,40 @@
![Remixer](https://cdn.rawgit.com/material-foundation/material-remixer/master/docs/assets/lockup_remixer_icon_horizontal_dark_small.svg)
# ![Remixer](docs/small_logo.png) Remixer Android
<img align="right" src="docs/remixer_screenshot.png" width="300px">

[![TravisCI Build Status](https://travis-ci.org/material-foundation/material-remixer-android.svg?branch=develop)](https://travis-ci.org/material-foundation/material-remixer-android) [![CircleCI Build Status](https://circleci.com/gh/material-foundation/material-remixer-android.svg?style=svg)](https://circleci.com/gh/material-foundation/material-remixer-android) [![codecov](https://codecov.io/gh/material-foundation/material-remixer-android/branch/develop/graph/badge.svg)](https://codecov.io/gh/material-foundation/material-remixer-android)

Remixer helps teams use and refine design specs by providing an abstraction for these values that is accessible and configurable from both inside and outside the app itself.
Remixer is a framework to iterate quickly on UI changes by allowing you to adjust UI variables without needing to rebuild (or even restart) your app. You can adjust Numbers, Colors, Booleans, and Strings. To see it in action check out the [example app](https://github.com/material-foundation/material-remixer-android/tree/develop/remixer_example).

This SDK for Android is currently in development.
If you are interested in using Remixer in another platform, you may want to check out the [iOS](https://github.com/material-foundation/material-remixer-ios) and [Javascript](https://github.com/material-foundation/material-remixer-js) repos. With any of the three platforms you can use the [Remote Controller](https://github.com/material-foundation/material-remixer-remote-web).

**New to Remixer?** Visit our [main repo](https://github.com/material-foundation/material-remixer) to get a full description of what it is and how it works.
## Using Remixer in your app

- - -
The following docs explain how to get Remixer up and running in your app, and details on what Variable types are currently supported.

1. [Getting started](GETTING_STARTED.md)
2. [Configure the UI](CONFIGURE_UI.md)
3. [Project structure](PROJECT_STRUCTURE.md)
4. [Supported Data Types](SUPPORTED_DATA_TYPES.md)
5. [Extending Remixer](EXTENDING_REMIXER.md) (TODO)
6. API Reference (_notice this includes internal APIs_):
- [Current Version 0.6.6](https://jitpack.io/com/github/material-foundation/material-remixer-android/remixer/0.6.6/javadoc/index.html)
- [Develop Snapshot](https://jitpack.io/com/github/material-foundation/material-remixer-android/remixer/develop-SNAPSHOT/javadoc/index.html)
- [Using Remixer](docs/USING_REMIXER.md)
- [Configure the UI](docs/CONFIGURE_UI.md)
- [Supported Data Types](docs/SUPPORTED_DATA_TYPES.md)
- (Optionally) [Configure the Firebase Remote Controller](docs/CONFIGURE_FIREBASE.md)

- - -
## Contributing to Remixer

## State of development
We're excited you want to contribute to the project! Please read these docs so we can get your contributions submitted quickly.

Visit our [State of Development](https://github.com/material-foundation/material-remixer/wiki/State-of-Development) wiki for the current roadmap and status of development for each platform.
- [Contribution policy and guidelines](docs/CONTRIBUTING.md)
- [Project structure](docs/PROJECT_STRUCTURE.md)
- [Extending Remixer](docs/EXTENDING_REMIXER.md)

## Repositories
## API Reference

The main Remixer GitHub repo for documentation, project tracking, and general information:
- [Remixer docs](https://github.com/material-foundation/material-remixer)
_Notice this includes internal APIs_:

Platform specific libraries and tools can be found in the following GitHub repos:

- [iOS](https://github.com/material-foundation/material-remixer-ios) - Remixer for iOS.
- [Web](https://github.com/material-foundation/material-remixer-web) - Remixer for Web.
- [Web Remote](https://github.com/material-foundation/material-remixer-remote-web) - Remixer web remote controller for all platforms.
- [Current Version 1.0](https://jitpack.io/com/github/material-foundation/material-remixer-android/remixer/1.0/javadoc/index.html)
- [Develop Snapshot](https://jitpack.io/com/github/material-foundation/material-remixer-android/remixer/develop-SNAPSHOT/javadoc/index.html)

## Is material-foundation affiliated with Google?

Yes, the [material-foundation](https://github.com/material-foundation) organization is one of Google's new homes for tools and frameworks related to our [Material Design](https://material.io) system. Please check out our blog post [Design is Never Done](https://design.google.com/articles/design-is-never-done/) for more information regarding Material Design and how Remixer integrates with the system.

## Contributing

We gladly welcome contributions! If you have found a bug, have questions, or wish to contribute, please follow our [Contributing Guidelines](CONTRIBUTING.md) and read the [High-level Project Structure](PROJECT_STRUCTURE.md).

## License

© Google, 2016. Licensed under an [Apache-2](https://github.com/material-foundation/material-remixer-android/blob/develop/LICENSE) license.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ ext {
// Force release proguard when running on a Continuous Integration environment (like TravisCI).
forceReleaseProguard = System.getenv("CI").equals("true");
// Sdk and tools
minSdkVersion = 15
minSdkVersion = 16
targetSdkVersion = 25
compileSdkVersion = 25
buildToolsVersion = '25.0.0'
Expand Down
50 changes: 50 additions & 0 deletions docs/CONFIGURE_FIREBASE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Configuring the Firebase Remote Controller

There are three steps to being able to use the Firebase Remote Controller with Remixer for Android:

1. Install the Firebase Remote Controller on a Firebase Instance.
2. Get your Firebase credentials
3. Set up Remixer synchronization to use the Firebase Remote.

## Step 1: Install Remote Controller on Firebase

This is out of the scope of this document, as it is properly documented [in the remote's repo](https://www.github.com/material-foundation/material-remixer-remote-web).

## Step 2: Get your Firebase credentials

- Go to your [Firebase console](https://console.firebase.google.com) and click on the Firebase App where you have uploaded the Remixer Remote Controller.
- Click _Add another app_ and follow the instructions (you can reuse an already registered app if that is appropriate).
- At the end you'll download a `google-services.json` file. Put that next to your application module's `build.gradle`

More detail can be found in [the Firebase documentation](https://firebase.google.com/docs/android/setup#manually_add_firebase).

## Step 3: Set up Remixer synchronization

Remixer relies on implementations of `SynchronizationMechanism` to store and sync values. This is set on your Application class's `onCreate()` method.

In order to use the Remote you only need to use the correct SynchronizationMechanism, `FirebaseRemoteControllerSyncer`, and optionally force it to start sharing variable status immediately

```java
import android.app.Application;
import com.google.android.libraries.remixer.Remixer;
import com.google.android.libraries.remixer.storage.FirebaseRemoteControllerSyncer;
import com.google.android.libraries.remixer.ui.RemixerInitialization;

class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
RemixerInitialization.initRemixer(this);
FirebaseRemoteControllerSyncer syncer = new FirebaseRemoteControllerSyncer(this);
Remixer.getInstance().setSynchronizationMechanism(syncer);
// Optionally you can start sharing your variables to the Remote automatically.
syncer.startSharing();
}
}
```

Since all the Variable Adjustment UI is completely available in the Firebase Remote Controller, if you start sharing in the Application class you may not want/need to use the `RemixerFragment` at all. In that case you can use `FirebaseRemoteControllerSyncer#getShareLinkIntent()` or `FirebaseRemoteControllerSyncer#getRemoteUrl()` to direct users to the remote on your own terms.

Otherwise, the `RemixerFragment` will automatically show options to share variables with the remote controller and share the link, see below:

![Sharing UI](sharing_ui.png)
22 changes: 19 additions & 3 deletions CONFIGURE_UI.md → docs/CONFIGURE_UI.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
![Remixer](https://cdn.rawgit.com/material-foundation/material-remixer/master/docs/assets/lockup_remixer_icon_horizontal_dark_small.svg)

# Display the Remixer Fragment

You can configure the `RemixerFragment` in the `Activity`'s `onCreate(Bundle)` method, after the call to `RemixerBinder.bind(this)`. You have 3 (not mutually-exclusive) options. You can see examples of how to do it below.
Expand All @@ -22,6 +20,22 @@ protected void onCreate(Bundle savedInstanceState) {
}
```

## Attach the Remixer Fragment to a FAB
You need to call `RemixerFragment#attachToFab(FragmentActivity, FloatingActionButton)`

Your `Activity.onCreate` may look like this:

```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
remixerFab = (FloatingActionButton) findViewById(R.id.fab);
RemixerBinder.bind(this);
RemixerFragment.newInstance().attachToFab(this, remixerFab);
}
```

## Attach the Remixer Fragment to a multi-touch gesture
You need to call `RemixerFragment#attachToGesture(FragmentActivity, Direction, int)`

Expand All @@ -34,7 +48,7 @@ protected void onCreate(Bundle savedInstanceState) {
//...
RemixerBinder.bind(this);
RemixerFragment.newInstance().attachToGesture(
this,
this,
Direction.UP,
3 /* numberOfFingers */);
}
Expand Down Expand Up @@ -75,11 +89,13 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ...
remixerButton = (Button) findViewById(R.id.button);
remixerFab = (FloatingActionButton) findViewById(R.id.fab);
RemixerBinder.bind(this);

remixerFragment = RemixerFragment.newInstance();
remixerFragment.attachToGesture(this, Direction.UP, 3);
remixerFragment.attachToButton(this, remixerButton);
remixerFragment.attachToFab(this, remixerFab);
}

@Override
Expand Down
4 changes: 4 additions & 0 deletions CONTRIBUTING.md → docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Contributing

Want to contribute? Great! First, read this page (including the small print at the end).

You will also be interested in the general [Project structure](PROJECT_STRUCTURE.md) and [How-to extend Remixer](EXTENDING_REMIXER.md)

## Pull requests

Pull requests can be hard to review if they try to tackle too many things
Expand Down
File renamed without changes.
2 changes: 0 additions & 2 deletions PROJECT_STRUCTURE.md → docs/PROJECT_STRUCTURE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
![Remixer](https://cdn.rawgit.com/material-foundation/material-remixer/master/docs/assets/lockup_remixer_icon_horizontal_dark_small.svg)

# Project structure

Remixer is built as a gradle project with several submodules. If you are interested in contributing you should know the roles of each submodule to be able to put things in the right place.
Expand Down
Loading

1 comment on commit 9c5f3d7

@microfauna
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

Please sign in to comment.