Skip to content
This repository has been archived by the owner on Apr 30, 2024. It is now read-only.

Support setting transitions in view controller #81

Merged
merged 5 commits into from
Nov 9, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 15 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ The `Screen` class is extendable, and will provide you with the foundation for y
```java

@ViewController(MyController.class)
@EnterTransition(FadeTransition.class)
@ExitTransition(FadeTransition.class)
public class MyScreen extends Screen {
}
```
Expand All @@ -57,8 +55,6 @@ You can also [use view binders like Butterknife](https://github.com/lyft/scoop/b
```java

@ViewController(MyController.class)
@EnterTransition(FadeTransition.class)
@ExitTransition(FadeTransition.class)
public class MyScreen extends Screen {
}
```
Expand Down Expand Up @@ -94,12 +90,10 @@ The big difference from Android fragments and activities is that in Scoop we don
Layout
===============

A `Layout` annotation can be used similarly to `ViewController` annotation, and can accomplish the same goals. However, there is a higher degree of coupling between the controller and the view in this approach, so this implementation is generally not recommended.
A `Layout` annotation can be used similarly to `ViewController` annotation, and can accomplish the same goals. However, there is a higher degree of coupling between the controller and the view in this approach, so this implementation is generally not recommended.

```java
@Layout(R.layout.my)
@EnterTransition(FadeTransition.class)
@ExitTransition(FadeTransition.class)
public class MyScreen extends Screen {
}
```
Expand Down Expand Up @@ -202,13 +196,22 @@ Transitions are animations played between moving from one `ViewController` to an
4. Upward slide
5. Fade

To apply a transition you have to specify it for your `Screen` using `EnterTranstion`/`ExitTransition` attributes.
To apply a transition you have to specify it for your `ViewController` by overriding `enterTransition()`/`exitTransition()` methods.

```java
@EnterTransition(FadeTransition.class)
@ExitTransition(FadeTransition.class)
public class MyScreen extends Screen {
...
public class MyController extends ViewController {

@Override
protected ScreenTransition enterTransition() {
return new ForwardSlideTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new BackwardSlideTransition();
}

...
}
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import com.example.scoop.basics.scoop.AppRouter;
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.layoutsample.module.NestedViewModule;
import com.lyft.scoop.ScreenTransition;
import com.lyft.scoop.dagger.DaggerInjector;
import com.lyft.scoop.transitions.FadeTransition;
import javax.inject.Inject;

public class NestedLayoutViewController extends BaseViewController {
Expand Down Expand Up @@ -53,4 +55,14 @@ public void onDetach() {
public void goBack() {
appRouter.goBack();
}

@Override
protected ScreenTransition enterTransition() {
return new FadeTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new FadeTransition();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,10 @@
import com.example.scoop.basics.ui.layoutsample.layout.NestedLayoutViewController;
import com.example.scoop.basics.ui.layoutsample.module.NestedLayoutModule;
import com.lyft.scoop.Controller;
import com.lyft.scoop.EnterTransition;
import com.lyft.scoop.ExitTransition;
import com.lyft.scoop.Screen;
import com.lyft.scoop.dagger.DaggerModule;
import com.lyft.scoop.transitions.FadeTransition;

@Controller(NestedLayoutViewController.class)
@DaggerModule(NestedLayoutModule.class)
@EnterTransition(FadeTransition.class)
@ExitTransition(FadeTransition.class)
public class NestedLayoutScreen extends Screen {
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.example.scoop.basics.scoop.AppRouter;
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.navigationsample.screen.BScreen;
import com.lyft.scoop.ScreenTransition;
import com.lyft.scoop.transitions.FadeTransition;
import javax.inject.Inject;

public class AController extends BaseViewController {
Expand Down Expand Up @@ -44,4 +46,14 @@ public void toast() {
Toast.makeText(getView().getContext(), TOAST_TEXT,
Toast.LENGTH_SHORT).show();
}

@Override
protected ScreenTransition enterTransition() {
return new FadeTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new FadeTransition();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import com.example.scoop.basics.scoop.AppRouter;
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.navigationsample.screen.CScreen;
import com.lyft.scoop.ScreenTransition;
import com.lyft.scoop.transitions.FadeTransition;
import javax.inject.Inject;

public class BController extends BaseViewController {
Expand Down Expand Up @@ -40,4 +42,14 @@ public void goBack() {
public void goToB() {
appRouter.goTo(new CScreen());
}

@Override
protected ScreenTransition enterTransition() {
return new FadeTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new FadeTransition();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import com.example.scoop.basics.scoop.AppRouter;
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.navigationsample.screen.AScreen;
import com.lyft.scoop.ScreenTransition;
import com.lyft.scoop.transitions.BackwardSlideTransition;
import com.lyft.scoop.transitions.ForwardSlideTransition;
import javax.inject.Inject;

public class CController extends BaseViewController {
Expand Down Expand Up @@ -35,4 +38,14 @@ public void onDetach() {
public void onClick() {
appRouter.resetTo(new AScreen());
}

@Override
protected ScreenTransition enterTransition() {
return new ForwardSlideTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new BackwardSlideTransition();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,10 @@
import com.example.scoop.basics.ui.navigationsample.controller.AController;
import com.example.scoop.basics.ui.navigationsample.module.AModule;
import com.lyft.scoop.Controller;
import com.lyft.scoop.EnterTransition;
import com.lyft.scoop.ExitTransition;
import com.lyft.scoop.Screen;
import com.lyft.scoop.dagger.DaggerModule;
import com.lyft.scoop.transitions.FadeTransition;

@Controller(AController.class)
@DaggerModule(AModule.class)
@EnterTransition(FadeTransition.class)
@ExitTransition(FadeTransition.class)
public class AScreen extends Screen {
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,10 @@
import com.example.scoop.basics.ui.navigationsample.controller.BController;
import com.example.scoop.basics.ui.navigationsample.module.BModule;
import com.lyft.scoop.Controller;
import com.lyft.scoop.EnterTransition;
import com.lyft.scoop.ExitTransition;
import com.lyft.scoop.Screen;
import com.lyft.scoop.dagger.DaggerModule;
import com.lyft.scoop.transitions.BackwardSlideTransition;
import com.lyft.scoop.transitions.ForwardSlideTransition;

@Controller(BController.class)
@DaggerModule(BModule.class)
@EnterTransition(ForwardSlideTransition.class)
@ExitTransition(BackwardSlideTransition.class)
public class BScreen extends Screen {
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,10 @@
import com.example.scoop.basics.ui.navigationsample.controller.CController;
import com.example.scoop.basics.ui.navigationsample.module.CModule;
import com.lyft.scoop.Controller;
import com.lyft.scoop.EnterTransition;
import com.lyft.scoop.ExitTransition;
import com.lyft.scoop.Screen;
import com.lyft.scoop.dagger.DaggerModule;
import com.lyft.scoop.transitions.BackwardSlideTransition;
import com.lyft.scoop.transitions.ForwardSlideTransition;

@Controller(CController.class)
@DaggerModule(CModule.class)
@EnterTransition(ForwardSlideTransition.class)
@ExitTransition(BackwardSlideTransition.class)
public class CScreen extends Screen {
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.paramsample.screen.ParametrizedScreen;
import com.lyft.scoop.Screen;
import com.lyft.scoop.ScreenTransition;
import com.lyft.scoop.transitions.FadeTransition;
import javax.inject.Inject;

public class ParametrizedController extends BaseViewController {
Expand Down Expand Up @@ -34,4 +36,14 @@ public void onAttach() {
public void onDetach() {
super.onDetach();
}

@Override
protected ScreenTransition enterTransition() {
return new FadeTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new FadeTransition();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,11 @@
import com.example.scoop.basics.ui.paramsample.controller.ParametrizedController;
import com.example.scoop.basics.ui.paramsample.module.ParametrizedModule;
import com.lyft.scoop.Controller;
import com.lyft.scoop.EnterTransition;
import com.lyft.scoop.ExitTransition;
import com.lyft.scoop.Screen;
import com.lyft.scoop.dagger.DaggerModule;
import com.lyft.scoop.transitions.FadeTransition;

@Controller(ParametrizedController.class)
@DaggerModule(ParametrizedModule.class)
@EnterTransition(FadeTransition.class)
@ExitTransition(FadeTransition.class)
public class ParametrizedScreen extends Screen {

private final String args;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import com.example.scoop.basics.rx.ViewSubscriptions;
import com.example.scoop.basics.scoop.AppRouter;
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.transitions.customtransition.AutoTransition;
import com.lyft.scoop.ScreenTransition;
import javax.inject.Inject;

public class AutoTransitionEndController extends BaseViewController {
Expand Down Expand Up @@ -39,4 +41,14 @@ public void onDetach() {
public void goNext() {
appRouter.goBack();
}

@Override
protected ScreenTransition enterTransition() {
return new AutoTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new AutoTransition();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.example.scoop.basics.scoop.AppRouter;
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.transitions.customtransition.screen.AutoTransitionEndScreen;
import com.lyft.scoop.ScreenTransition;
import com.lyft.scoop.transitions.FadeTransition;
import javax.inject.Inject;

public class AutoTransitionStartController extends BaseViewController {
Expand Down Expand Up @@ -40,4 +42,14 @@ public void onDetach() {
public void goNext() {
appRouter.goTo(new AutoTransitionEndScreen());
}

@Override
protected ScreenTransition enterTransition() {
return new FadeTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new FadeTransition();
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
package com.example.scoop.basics.ui.transitions.customtransition.screen;

import com.example.scoop.basics.ui.transitions.customtransition.AutoTransition;
import com.example.scoop.basics.ui.transitions.customtransition.controller.AutoTransitionEndController;
import com.example.scoop.basics.ui.transitions.customtransition.module.AutoTransitionEndModule;
import com.lyft.scoop.Controller;
import com.lyft.scoop.EnterTransition;
import com.lyft.scoop.ExitTransition;
import com.lyft.scoop.Screen;
import com.lyft.scoop.dagger.DaggerModule;

@Controller(AutoTransitionEndController.class)
@DaggerModule(AutoTransitionEndModule.class)
@EnterTransition(AutoTransition.class)
@ExitTransition(AutoTransition.class)
public class AutoTransitionEndScreen extends Screen {
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
package com.example.scoop.basics.ui.transitions.customtransition.screen;

import com.example.scoop.basics.ui.transitions.customtransition.AutoTransition;
import com.example.scoop.basics.ui.transitions.customtransition.controller.AutoTransitionStartController;
import com.example.scoop.basics.ui.transitions.customtransition.module.AutoTransitionStartModule;
import com.lyft.scoop.Controller;
import com.lyft.scoop.EnterTransition;
import com.lyft.scoop.ExitTransition;
import com.lyft.scoop.Screen;
import com.lyft.scoop.dagger.DaggerModule;

@Controller(AutoTransitionStartController.class)
@DaggerModule(AutoTransitionStartModule.class)
@EnterTransition(AutoTransition.class)
@ExitTransition(AutoTransition.class)
public class AutoTransitionStartScreen extends Screen {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
import com.example.scoop.basics.R;
import com.example.scoop.basics.scoop.DialogRouter;
import com.example.scoop.basics.ui.BaseViewController;
import com.example.scoop.basics.ui.transitions.dialogtransitions.SlideDownTransition;
import com.example.scoop.basics.ui.transitions.dialogtransitions.SlideUpTransition;
import com.lyft.scoop.ScreenTransition;
import javax.inject.Inject;

public class DialogController extends BaseViewController {
Expand All @@ -24,4 +27,14 @@ protected int layoutId() {
public void goToB() {
dialogRouter.dismiss();
}

@Override
protected ScreenTransition enterTransition() {
return new SlideUpTransition();
}

@Override
protected ScreenTransition exitTransition() {
return new SlideDownTransition();
}
}
Loading