├── .gitignore
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── fonts
│ │ ├── YanoneKaffeesatz-Bold.ttf
│ │ ├── YanoneKaffeesatz-Light.ttf
│ │ ├── YanoneKaffeesatz-Regular.ttf
│ │ └── YanoneKaffeesatz-Thin.ttf
│ └── source
│ │ ├── activity_transitions.java
│ │ ├── activity_transitions.java.html
│ │ ├── activity_transitions.xml
│ │ ├── activity_transitions.xml.html
│ │ ├── activity_transitions_methods.java
│ │ ├── activity_transitions_methods.java.html
│ │ ├── anim1.java.html
│ │ ├── at2_called.java
│ │ ├── at2_called.java.html
│ │ ├── at2_calling.java
│ │ ├── at2_calling.java.html
│ │ ├── at3_called.java
│ │ ├── at3_called.java.html
│ │ ├── at3_calling.java
│ │ ├── at3_calling.java.html
│ │ ├── at4_called.java
│ │ ├── at4_called.java.html
│ │ ├── at4_calling.java
│ │ ├── at4_calling.java.html
│ │ ├── at5_called.java
│ │ ├── at5_called.java.html
│ │ ├── at5_calling.java
│ │ ├── at5_calling.java.html
│ │ ├── at6_calling.java
│ │ ├── at6_calling.java.html
│ │ ├── auto.java
│ │ ├── auto.java.html
│ │ ├── build.gradle.html
│ │ ├── custom1.java
│ │ ├── custom1.java.html
│ │ ├── custom2.java
│ │ ├── custom2.java.html
│ │ ├── custom3.java
│ │ ├── custom3.java.html
│ │ ├── custom4.java
│ │ ├── custom4.java.html
│ │ ├── delayed.java
│ │ ├── delayed.java.html
│ │ ├── delayed2.java
│ │ ├── delayed2.java.html
│ │ ├── from_details.xml
│ │ ├── from_details.xml.html
│ │ ├── init.java.html
│ │ ├── itemclick.java.html
│ │ ├── ltransition1.java.html
│ │ ├── ltransition2.java.html
│ │ ├── ltransition3.java.html
│ │ ├── morph.xml
│ │ ├── morph.xml.html
│ │ ├── predraw.java.html
│ │ ├── ripple_press.xml.html
│ │ ├── scene_code.java
│ │ ├── scene_code.java.html
│ │ ├── scene_code2.java
│ │ ├── scene_code2.java.html
│ │ ├── scene_transition.xml
│ │ ├── scene_transition.xml.html
│ │ ├── scenes1.xml
│ │ ├── scenes1.xml.html
│ │ ├── scenes2.xml
│ │ ├── scenes2.xml.html
│ │ ├── scenes3.xml
│ │ ├── scenes3.xml.html
│ │ ├── slide_left.xml
│ │ ├── slide_left.xml.html
│ │ ├── tm.java.html
│ │ ├── tm1.java
│ │ ├── tm1.java.html
│ │ ├── tm2.java
│ │ ├── tm2.java.html
│ │ ├── tm3.java
│ │ ├── tm3.java.html
│ │ ├── tm4.java
│ │ ├── tm4.java.html
│ │ ├── tm5.java
│ │ ├── tm5.java.html
│ │ ├── tm6.java.html
│ │ ├── to_details.xml
│ │ ├── to_details.xml.html
│ │ ├── touch_anim.xml.html
│ │ ├── transitions.java
│ │ ├── transitions.java.html
│ │ ├── transitions.xml.html
│ │ └── transitions2.xml.html
│ ├── java
│ └── com
│ │ └── luciofm
│ │ └── presentation
│ │ └── droiconit
│ │ ├── activity
│ │ ├── BaseActivity.java
│ │ ├── DetailsActivity.java
│ │ ├── FirstActivity.java
│ │ ├── MainActivity.java
│ │ ├── MovieDetailsActivity.java
│ │ └── ThanksActivity.java
│ │ ├── anim
│ │ ├── AlphaSpan.java
│ │ ├── AnimUtils.java
│ │ ├── LayerEnablingAnimatorListener.java
│ │ ├── TextSizeSpan.java
│ │ ├── TextTransform.java
│ │ ├── XFractionProperty.java
│ │ └── YFractionProperty.java
│ │ ├── fragment
│ │ ├── ActivityTransitionFragment.java
│ │ ├── AwesomeFragment.java
│ │ ├── BaseFragment.java
│ │ ├── HelloFragment.java
│ │ ├── IntroFragment.java
│ │ ├── ItemAdapter.java
│ │ ├── LayoutTransitionFragment.java
│ │ ├── MoreTransitionManagerFragment.java
│ │ ├── MoviesFragment.java
│ │ ├── MyselfFragment.java
│ │ ├── QuesionsFragment.java
│ │ ├── SceneFragment.java
│ │ ├── SlackFragment.java
│ │ ├── TransitionManagerFragment.java
│ │ └── WorkFragment.java
│ │ ├── model
│ │ ├── Entry.java
│ │ ├── Item.java
│ │ ├── Items.java
│ │ ├── Movie.java
│ │ └── Movies.java
│ │ ├── transitions
│ │ ├── ChangeImageTransform.java
│ │ ├── ChangeText.java
│ │ ├── ChangeVideoTransform.java
│ │ ├── CircleTransition.java
│ │ ├── NoTransition.java
│ │ ├── Pop.java
│ │ ├── Recolor.java
│ │ ├── TransitionListenerAdapter.java
│ │ └── ZoomOut.java
│ │ ├── util
│ │ ├── CircleTransformation.java
│ │ ├── IOUtils.java
│ │ ├── PaletteTransformation.java
│ │ ├── TopCropTransformation.java
│ │ ├── TypefaceCache.java
│ │ └── Utils.java
│ │ └── widget
│ │ ├── AnimatedLayout.java
│ │ ├── CanvasGridLayout.java
│ │ ├── SquareGridLayout.java
│ │ ├── TextView.java
│ │ └── TextureVideoView.java
│ └── res
│ ├── drawable-hdpi
│ ├── android_flag.png
│ ├── arlington.jpg
│ ├── arlington_scene_02.jpg
│ ├── awesome.jpg
│ ├── crazy_heart.jpg
│ ├── crazy_heart_scene_01.jpg
│ ├── dog_year.jpg
│ ├── dog_year_scene.jpg
│ ├── goats.jpg
│ ├── goats_scene_02.jpg
│ ├── iron_man.jpg
│ ├── iron_man_scene.jpg
│ ├── lebowski.jpg
│ ├── lebowski_scene_02.jpg
│ ├── lebowski_ver2.jpg
│ ├── lucio_badge.png
│ ├── rallat.jpg
│ ├── seabiscuit.jpg
│ ├── seabiscuit_scene.jpg
│ ├── stick_it.jpg
│ ├── surfs_up.jpg
│ ├── surfs_up_scene.jpg
│ ├── toggle_facebook_active.png
│ ├── toggle_facebook_inactive.png
│ ├── toggle_twitter_inactive.png
│ ├── tron.jpg
│ ├── tron_legacy.jpg
│ ├── tron_legacy_02.jpg
│ ├── tron_screen_01.jpg
│ ├── true_grit.jpg
│ ├── true_grit_scene_01.jpg
│ ├── whi.png
│ └── whi_blur.png
│ ├── drawable-nodpi
│ ├── image1.png
│ ├── image2.png
│ ├── image3.png
│ ├── image4.png
│ ├── image5.png
│ ├── image6.png
│ ├── image7.png
│ ├── image8.png
│ ├── video1.png
│ ├── video2.png
│ ├── video3.png
│ ├── video4.png
│ ├── video5.png
│ ├── video6.png
│ ├── video7.png
│ └── video8.png
│ ├── drawable-xxhdpi
│ ├── me.jpg
│ └── solid_with_border.xml
│ ├── drawable
│ ├── border.xml
│ ├── ic_check_white_48dp.png
│ ├── ic_image.png
│ ├── ic_image_crop.png
│ ├── item_background_material.xml
│ ├── ripple_blue.xml
│ ├── ripple_press.xml
│ ├── shape_circle_placeholder.xml
│ ├── shape_round_corners.xml
│ └── vibrant_background.xml
│ ├── layout
│ ├── activity_details.xml
│ ├── activity_movie_details.xml
│ ├── activity_thanks.xml
│ ├── canvas_grid_entry.xml
│ ├── fragment_activitytransition.xml
│ ├── fragment_awesome.xml
│ ├── fragment_hello.xml
│ ├── fragment_intro.xml
│ ├── fragment_layouttransition.xml
│ ├── fragment_movies.xml
│ ├── fragment_myself.xml
│ ├── fragment_questions.xml
│ ├── fragment_scene.xml
│ ├── fragment_slack.xml
│ ├── fragment_tm.xml
│ ├── fragment_tm2.xml
│ ├── fragment_work.xml
│ ├── grid_item.xml
│ ├── main_activity.xml
│ ├── movie_item.xml
│ ├── root.xml
│ ├── scene_myself_1.xml
│ ├── scene_myself_2.xml
│ ├── scene_scene1.xml
│ ├── scene_scene2.xml
│ └── text_item.xml
│ ├── menu
│ ├── menu_details.xml
│ ├── menu_first.xml
│ ├── menu_main.xml
│ ├── menu_movies.xml
│ └── menu_thanks.xml
│ ├── mipmap-hdpi
│ └── ic_launcher.png
│ ├── mipmap-mdpi
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ └── ic_launcher.png
│ ├── mipmap-xxhdpi
│ └── ic_launcher.png
│ ├── raw
│ ├── video1.mp4
│ ├── video2.mp4
│ ├── video3.mp4
│ ├── video4.mp4
│ ├── video5.mp4
│ ├── video6.mp4
│ ├── video7.mp4
│ └── video8.mp4
│ ├── transition
│ ├── explode.xml
│ ├── fade.xml
│ ├── from_details.xml
│ ├── move.xml
│ ├── move_arc.xml
│ ├── move_path.xml
│ ├── no_transition.xml
│ ├── scene_transition.xml
│ ├── slide_bottom.xml
│ ├── slide_left.xml
│ ├── slide_right.xml
│ ├── slide_top.xml
│ └── to_details.xml
│ ├── values-w820dp
│ └── dimens.xml
│ └── values
│ ├── attrs.xml
│ ├── colors.xml
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── fromthistothat.apk
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | *.iml
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | From This To That – A deep dive into the TransitionManager and Activity Transitions
2 | ======
3 |
4 | Aplicativo apresentação da Palestra "From This To That – A deep dive into the TransitionManager and Activity Transitions" na Android Dev Conference 2015
5 |
6 | Esse aplicativo foi feito exclusivamente para o tablet Nexus 9 (mudando a resolução para 1024x768) rodando Android 5.1.
7 |
8 | Minha sugestão, se você não tem um Nexus 9, é usar o [genymotion.com](http://genymotion.com) e ajustar a resolução para 1024x768
9 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | jcenter()
4 | }
5 | dependencies {
6 | classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
7 | }
8 | }
9 |
10 | apply plugin: 'com.android.application'
11 | apply plugin: 'com.neenbedankt.android-apt'
12 |
13 | android {
14 | compileSdkVersion 23
15 | buildToolsVersion "23.0.0"
16 |
17 | defaultConfig {
18 | applicationId "com.luciofm.presentation.droiconit"
19 | minSdkVersion 21
20 | targetSdkVersion 23
21 | versionCode 1
22 | versionName "1.0"
23 | }
24 | buildTypes {
25 | release {
26 | minifyEnabled false
27 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
28 | }
29 | }
30 | }
31 |
32 | dependencies {
33 | compile fileTree(dir: 'libs', include: ['*.jar'])
34 |
35 | compile 'com.jakewharton:butterknife:6.1.0'
36 | compile 'commons-io:commons-io:2.4'
37 | compile 'net.frakbot:jumpingbeans:1.0-SNAPSHOT@aar'
38 | compile 'com.squareup.picasso:picasso:2.5.2'
39 | compile 'com.android.support:palette-v7:23.0.0'
40 | compile 'com.android.support:gridlayout-v7:23.0.0'
41 | compile 'org.parceler:parceler-api:0.2.15'
42 | apt "org.parceler:parceler:0.2.15"
43 | }
44 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/luciofm/android/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
13 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 |
32 |
33 |
36 |
37 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/YanoneKaffeesatz-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/assets/fonts/YanoneKaffeesatz-Bold.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/YanoneKaffeesatz-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/assets/fonts/YanoneKaffeesatz-Light.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/YanoneKaffeesatz-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/assets/fonts/YanoneKaffeesatz-Regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/YanoneKaffeesatz-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/assets/fonts/YanoneKaffeesatz-Thin.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/source/activity_transitions.java:
--------------------------------------------------------------------------------
1 |
2 | view.setTransitionName("shared_hero");
3 |
4 | Intent intent = new Intent(getActivity(), MovieDetailsActivity.class);
5 |
6 | ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, hero, "shared_hero");
7 |
8 | startActivity(intent, options.toBundle());
9 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/activity_transitions.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | view.setTransitionName("shared_hero");
14 |
15 | Intent intent = new Intent(getActivity(), MovieDetailsActivity.class);
16 |
17 | ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, hero, "shared_hero");
18 |
19 | startActivity(intent, options.toBundle());
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/activity_transitions.xml:
--------------------------------------------------------------------------------
1 | - true
3 | - @android:transition/move
5 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/activity_transitions.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <item
13 | name="android:windowActivityTransitions">true</item>
14 | <item
15 | name="android:windowSharedElementEnterTransition">@android:transition/move</item>
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/activity_transitions_methods.java:
--------------------------------------------------------------------------------
1 | set{Enter,Exit,Return,Reenter}Transition();
2 |
3 | setSharedElement{Enter,Exit,Return,Reenter}Transition();
--------------------------------------------------------------------------------
/app/src/main/assets/source/activity_transitions_methods.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | set{Enter,Exit,Return,Reenter}Transition();
13 |
14 | setSharedElement{Enter,Exit,Return,Reenter}Transition();
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/anim1.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | // Animate the size and position of the Image...
13 | image.animate().setDuration(duration)
14 | .scaleX(1).scaleY(1)
15 | .translationX(0).translationY(0)
16 | .setInterpolator(sDecelerator)
17 | .setListener(new SimpleAnimatorListener() {
18 | @Override
19 | public void onAnimationEnd(Animator animation) {
20 | // Slide up the text...
21 | text1.setTranslationY(text1.getHeight());
22 | text1.animate().setDuration(duration / 2)
23 | .translationY(0).alpha(1)
24 | .setInterpolator(sDecelerator);
25 | }
26 | });
27 |
28 | ObjectAnimator bgAnim = ObjectAnimator.ofInt(background, "alpha", 0, 255);
29 | bgAnim.setDuration(duration * 2);
30 | bgAnim.start();
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at2_called.java:
--------------------------------------------------------------------------------
1 |
2 | // Called Activity
3 | slide = new Slide(Gravity.RIGHT);
4 | fade = new Fade();
5 | slide.addTarget(R.id.imagesHeader);
6 | set = new TransitionSet();
7 | set.addTransition(slide).addTransition(fade);
8 | getWindow().setEnterTransition(set);
9 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at2_called.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Called Activity
14 | slide = new Slide(Gravity.RIGHT);
15 | fade = new Fade();
16 | slide.addTarget(R.id.imagesHeader);
17 | set = new TransitionSet();
18 | set.addTransition(slide).addTransition(fade);
19 | getWindow().setEnterTransition(set);
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at2_calling.java:
--------------------------------------------------------------------------------
1 |
2 | // Calling Activity
3 | set = new TransitionSet();
4 | fade = new Fade();
5 | slide = new Slide(Gravity.BOTTOM);
6 | propagation = new CircularPropagation();
7 | propagation.setPropagationSpeed(1f);
8 | set.addTransition(fade).addTransition(slide);
9 | set.setPropagation(propagation);
10 | set.setOrdering(ORDERING_TOGETHER);
11 | getWindow().setExitTransition(set);
12 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at2_calling.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Calling Activity
14 | set = new TransitionSet();
15 | fade = new Fade();
16 | slide = new Slide(Gravity.BOTTOM);
17 | propagation = new CircularPropagation();
18 | propagation.setPropagationSpeed(1f);
19 | set.addTransition(fade).addTransition(slide);
20 | set.setPropagation(propagation);
21 | set.setOrdering(ORDERING_TOGETHER);
22 | getWindow().setExitTransition(set);
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at3_called.java:
--------------------------------------------------------------------------------
1 |
2 | // Called Activity
3 | getWindow().setEnterTransition(
4 | TransitionInflater.from(this)
5 | .inflateTransition(R.transition.slide_bottom));
6 | getWindow().setReturnTransition(
7 | TransitionInflater.from(this)
8 | .inflateTransition(R.transition.explode));
--------------------------------------------------------------------------------
/app/src/main/assets/source/at3_called.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Called Activity
14 | getWindow().setEnterTransition(
15 | TransitionInflater.from(this)
16 | .inflateTransition(R.transition.slide_bottom));
17 | getWindow().setReturnTransition(
18 | TransitionInflater.from(this)
19 | .inflateTransition(R.transition.explode));
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at3_calling.java:
--------------------------------------------------------------------------------
1 |
2 | // Calling Activity
3 | explode = new Explode();
4 | propagation = new CircularPropagation();
5 | propagation.setPropagationSpeed(1f);
6 | explode.setPropagation(propagation);
7 | getWindow().setReenterTransition(explode);
8 | getWindow().setExitTransition(explode);
9 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at3_calling.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Calling Activity
14 | explode = new Explode();
15 | propagation = new CircularPropagation();
16 | propagation.setPropagationSpeed(1f);
17 | explode.setPropagation(propagation);
18 | getWindow().setReenterTransition(explode);
19 | getWindow().setExitTransition(explode);
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at4_called.java:
--------------------------------------------------------------------------------
1 |
2 | // Called Activity
3 | slide = new Slide(Gravity.RIGHT);
4 | propagation = new CircularPropagation();
5 | propagation.setPropagationSpeed(1f);
6 | getWindow().setEnterTransition(slide);
7 | getWindow().setReturnTransition(slide);
8 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at4_called.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Called Activity
14 | slide = new Slide(Gravity.RIGHT);
15 | propagation = new CircularPropagation();
16 | propagation.setPropagationSpeed(1f);
17 | getWindow().setEnterTransition(slide);
18 | getWindow().setReturnTransition(slide);
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at4_calling.java:
--------------------------------------------------------------------------------
1 |
2 | // Calling Activity
3 | slide = new Slide(Gravity.LEFT);
4 | propagation = new CircularPropagation();
5 | propagation.setPropagationSpeed(1f);
6 | slide.setPropagation(propagation);
7 | getWindow().setExitTransition(slide);
8 | getWindow().setReenterTransition(slide);
9 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at4_calling.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Calling Activity
14 | slide = new Slide(Gravity.LEFT);
15 | propagation = new CircularPropagation();
16 | propagation.setPropagationSpeed(1f);
17 | slide.setPropagation(propagation);
18 | getWindow().setExitTransition(slide);
19 | getWindow().setReenterTransition(slide);
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at5_called.java:
--------------------------------------------------------------------------------
1 |
2 | // Called Activity
3 | slide = new Slide(Gravity.BOTTOM);
4 | slide2 = new Slide(Gravity.TOP);
5 | getWindow().setEnterTransition(slide);
6 | getWindow().setReturnTransition(slide2);
--------------------------------------------------------------------------------
/app/src/main/assets/source/at5_called.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Called Activity
14 | slide = new Slide(Gravity.BOTTOM);
15 | slide2 = new Slide(Gravity.TOP);
16 | getWindow().setEnterTransition(slide);
17 | getWindow().setReturnTransition(slide2);
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at5_calling.java:
--------------------------------------------------------------------------------
1 |
2 | // Calling Activity
3 | getWindow().setExitTransition(
4 | inflater.inflateTransition(R.transition.slide_top));
5 |
6 | getWindow().setReenterTransition(
7 | inflater.inflateTransition(R.transition.slide_bottom));
--------------------------------------------------------------------------------
/app/src/main/assets/source/at5_calling.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Calling Activity
14 | getWindow().setExitTransition(
15 | inflater.inflateTransition(R.transition.slide_top));
16 |
17 | getWindow().setReenterTransition(
18 | inflater.inflateTransition(R.transition.slide_bottom));
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at6_calling.java:
--------------------------------------------------------------------------------
1 |
2 | // Calling Activity
3 | Pop pop = new Pop(false);
4 | getWindow().setReenterTransition(pop);
5 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/at6_calling.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Calling Activity
14 | Pop pop = new Pop(false);
15 | getWindow().setReenterTransition(pop);
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/auto.java:
--------------------------------------------------------------------------------
1 | public class AutoTransition extends TransitionSet {
2 | public AutoTransition() {
3 | setOrdering(ORDERING_SEQUENTIAL);
4 | addTransition(new Fade(Fade.OUT)).
5 | addTransition(new ChangeBounds()).
6 | addTransition(new Fade(Fade.IN));
7 | }
8 | }
--------------------------------------------------------------------------------
/app/src/main/assets/source/auto.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | public class AutoTransition extends TransitionSet {
13 | public AutoTransition() {
14 | setOrdering(ORDERING_SEQUENTIAL);
15 | addTransition(new Fade(Fade.OUT)).
16 | addTransition(new ChangeBounds()).
17 | addTransition(new Fade(Fade.IN));
18 | }
19 | }
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/build.gradle.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | defaultConfig {
13 | minSdkVersion 15
14 | targetSdkVersion 21
15 | }
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom1.java:
--------------------------------------------------------------------------------
1 | TransitionSet set = new TransitionSet();
2 | set.setOrdering(TransitionSet.ORDERING_SEQUENTIAL);
3 | Pop pop = new Pop();
4 | pop.setPropagation(new CircularPropagation());
5 | pop.setEpicenterCallback(new Transition.EpicenterCallback() {
6 | @Override
7 | public Rect onGetEpicenter(Transition transition) {
8 | container3.getLocationOnScreen(loc);
9 | return new Rect(loc[0], loc[1], loc[0] + container3.getWidth(), loc[1] + 40);
10 | }
11 | });
12 |
13 | set.addTransition(new ChangeBounds()).addTransition(pop);
14 | TransitionManager.beginDelayedTransition(container3, set);
15 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom1.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | TransitionSet set = new TransitionSet();
13 | set.setOrdering(TransitionSet.ORDERING_SEQUENTIAL);
14 | Pop pop = new Pop();
15 | pop.setPropagation(new CircularPropagation());
16 | pop.setEpicenterCallback(new Transition.EpicenterCallback() {
17 | @Override
18 | public Rect onGetEpicenter(Transition transition) {
19 | container3.getLocationOnScreen(loc);
20 | return new Rect(loc[0], loc[1], loc[0] + container3.getWidth(), loc[1] + 40);
21 | }
22 | });
23 |
24 | set.addTransition(new ChangeBounds()).addTransition(pop);
25 | TransitionManager.beginDelayedTransition(container3, set);
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom2.java:
--------------------------------------------------------------------------------
1 | public class CustomTransition extends Transition {
2 | @Override
3 | public void captureStartValues(TransitionValues transitionValues) {
4 | }
5 |
6 | @Override
7 | public void captureEndValues(TransitionValues transitionValues) {
8 | }
9 |
10 | @Override
11 | public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) {
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom2.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | public class CustomTransition extends Transition {
13 | @Override
14 | public void captureStartValues(TransitionValues transitionValues) {
15 | }
16 |
17 | @Override
18 | public void captureEndValues(TransitionValues transitionValues) {
19 | }
20 |
21 | @Override
22 | public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) {
23 | }
24 | }
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom3.java:
--------------------------------------------------------------------------------
1 | public class Pop extends Visibility {
2 | @Override
3 | public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
4 | }
5 |
6 | @Override
7 | public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom3.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | public class Pop extends Visibility {
13 | @Override
14 | public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
15 | }
16 |
17 | @Override
18 | public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
19 | }
20 | }
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom4.java:
--------------------------------------------------------------------------------
1 | // onAppear...
2 | view.setScaleX(0f);
3 | view.setScaleY(0f);
4 |
5 | PropertyValuesHolder[] pvh = new PropertyValuesHolder[2];
6 | pvh[0] = PropertyValuesHolder.ofFloat(View.SCALE_X, 1f);
7 | pvh[1] = PropertyValuesHolder.ofFloat(View.SCALE_Y, 1f);
8 |
9 | ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(view, pvh);
10 | anim.setInterpolator(new OvershootInterpolator());
11 |
12 | return anim;
13 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/custom4.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | // onAppear...
13 | view.setScaleX(0f);
14 | view.setScaleY(0f);
15 |
16 | PropertyValuesHolder[] pvh = new PropertyValuesHolder[2];
17 | pvh[0] = PropertyValuesHolder.ofFloat(View.SCALE_X, 1f);
18 | pvh[1] = PropertyValuesHolder.ofFloat(View.SCALE_Y, 1f);
19 |
20 | ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(view, pvh);
21 | anim.setInterpolator(new OvershootInterpolator());
22 |
23 | return anim;
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/delayed.java:
--------------------------------------------------------------------------------
1 | // Showing register fields...
2 | TransitionManager.beginDelayedTransition(regContainer);
3 |
4 | editUsername.setVisibility(View.VISIBLE);
5 | editPass.setVisibility(View.VISIBLE);
6 | editPass2.setVisibility(View.VISIBLE);
7 | buttonReg.setVisibility(View.VISIBLE);
8 |
9 | // Hiding it...
10 | TransitionManager.beginDelayedTransition(regContainer);
11 | editUsername.setVisibility(View.GONE);
12 | editPass.setVisibility(View.GONE);
13 | ...
14 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/delayed.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | // Showing register fields...
13 | TransitionManager.beginDelayedTransition(regContainer);
14 |
15 | editUsername.setVisibility(View.VISIBLE);
16 | editPass.setVisibility(View.VISIBLE);
17 | editPass2.setVisibility(View.VISIBLE);
18 | buttonReg.setVisibility(View.VISIBLE);
19 |
20 | // Hiding it...
21 | TransitionManager.beginDelayedTransition(regContainer);
22 | editUsername.setVisibility(View.GONE);
23 | editPass.setVisibility(View.GONE);
24 | ...
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/delayed2.java:
--------------------------------------------------------------------------------
1 | TransitionManager.beginDelayedTransition(regContainer,
2 | new AutoTransition());
3 |
4 | // AutoTransition
5 | TransitionSet set = new TransitionSet();
6 | set.setOrdering(ORDERING_SEQUENTIAL);
7 | set.addTransition(new Fade(Fade.OUT))
8 | .addTransition(new ChangeBounds())
9 | .addTransition(new Fade(Fade.IN));
10 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/delayed2.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | TransitionManager.beginDelayedTransition(regContainer,
13 | new AutoTransition());
14 |
15 | // AutoTransition
16 | TransitionSet set = new TransitionSet();
17 | set.setOrdering(ORDERING_SEQUENTIAL);
18 | set.addTransition(new Fade(Fade.OUT))
19 | .addTransition(new ChangeBounds())
20 | .addTransition(new Fade(Fade.IN));
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/from_details.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/from_details.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <!-- from_details.xml -->
13 | <transitionSet transitionOrdering="sequential">
14 | <transitionSet>
15 | <fade android:fadingMode="fade_in" />
16 | <targets>
17 | <target android:excludeId="@id/checkMark" />
18 | </targets>
19 | </transitionSet>
20 | <transitionSet transitionOrdering="together">
21 | <changeImageTransform />
22 | <changeBounds />
23 | </transitionSet>
24 | <fade android:fadingMode="fade_in" />
25 | </transitionSet>
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/init.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | // Set initial position and size on the Image
13 | // where we will animate to the final state......
14 | image.setPivotX(0);
15 | image.setPivotY(0);
16 | image.setScaleX(widthScale);
17 | image.setScaleY(heightScale);
18 | image.setTranslationX(leftDelta);
19 | image.setTranslationY(topDelta);
20 |
21 | // Later we animate the content text...
22 | text1.setAlpha(0);
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/itemclick.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | public class ViewInfo {
13 | public int left;
14 | public int top;
15 | public int width;
16 | public int height;
17 | }
18 |
19 | @Override
20 | public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
21 | Dog dog = (Dog) view.getTag();
22 | ViewInfo info = new ViewInfo(view);
23 |
24 | Intent intent = new Intent(getActivity(), TransitionActivity.class);
25 | intent.putExtra("DOG", dog);
26 | intent.putExtra("INFO", info);
27 | startActivity(intent);
28 | getActivity().overridePendingTransition(0, 0);
29 | }
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/ltransition1.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // getView on Adapter
14 | view.setTransitionName(dog.getname());
15 |
16 | // OnItemClickListener
17 | Dog dog = (Dog) view.getTag();
18 |
19 | Intent intent = new Intent(this,
20 | LTransitionActivity.class);
21 | intent.putExtra("DOG", dog);
22 |
23 | ActivityOptions options; =
24 | options = ActivityOptions
25 | .makeSceneTransitionAnimation(this,
26 | view, "photo_hero");
27 | startActivity(intent, options.toBundle());
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/ltransition2.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | // onCreate
15 | dog = getIntent.getExtras().getParcelable("DOG");
16 |
17 | getWindow().getEnterTransition()
18 | .addListener(new TransitionAdapter() {
19 | @Override
20 | public void onTransitionEnd(Transition transition) {
21 | animTextIn();
22 | getWindow().getEnterTransition()
23 | .removeListener(this);
24 | }
25 | });
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/ltransition3.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | public void animateTextIn() {
15 | final long duration = Utils.ANIM_DURATION;
16 | text1.setVisibility(View.VISIBLE);
17 | text1.setAlpha(0);
18 | text1.setTranslationY(text1.getHeight());
19 | text1.animate().setDuration(duration / 2)
20 | .translationY(0).alpha(1)
21 | .setInterpolator(sDecelerator);
22 | }
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/morph.xml:
--------------------------------------------------------------------------------
1 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
13 | ...
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/predraw.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | image.getViewTreeObserver()
13 | .addOnPreDrawListener(new ViewTreeObserver
14 | .OnPreDrawListener() {
15 | @Override
16 | public boolean onPreDraw() {
17 | image.getViewTreeObserver()
18 | .removeOnPreDrawListener(this);
19 |
20 | int[] screenLocation = new int[2];
21 | image.getLocationOnScreen(screenLocation);
22 | leftDelta = info.left - screenLocation[0];
23 | topDelta = info.top - screenLocation[1];
24 |
25 | widthScale = (float) info.width / image.getWidth();
26 | heightScale = (float) info.height / image.getHeight();
27 |
28 | runEnterAnimation();
29 |
30 | return true;
31 | }
32 | });
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/ripple_press.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <?xml version="1.0" encoding="utf-8"?>
13 | <ripple xmlns:android="http://schemas.android.com/apk/res/android"
14 | android:color="?android:colorControlHighlight">
15 | <item android:id="@android:id/mask">
16 | <shape android:shape="rectangle">
17 | <solid android:color="?android:colorAccent" />
18 | </shape>
19 | </item>
20 | </ripple>
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scene_code.java:
--------------------------------------------------------------------------------
1 | tm = TransitionInflater.from(getActivity())
2 | .inflateTransitionManager(R.transition.scene_transition, root);
3 |
4 | scene1 = Scene.getSceneForLayout(root, R.layout.scene_scene1, getActivity());
5 | scene2 = Scene.getSceneForLayout(root, R.layout.scene_scene2, getActivity());
6 |
7 | // go to scene2
8 | tm.transitionTo(scene2);
9 |
10 | // go to scene1
11 | tm.transitionTo(scene1);
--------------------------------------------------------------------------------
/app/src/main/assets/source/scene_code.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | tm = TransitionInflater.from(getActivity())
13 | .inflateTransitionManager(R.transition.scene_transition, root);
14 |
15 | scene1 = Scene.getSceneForLayout(root, R.layout.scene_scene1, getActivity());
16 | scene2 = Scene.getSceneForLayout(root, R.layout.scene_scene2, getActivity());
17 |
18 | // go to scene2
19 | tm.transitionTo(scene2);
20 |
21 | // go to scene1
22 | tm.transitionTo(scene1);
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scene_code2.java:
--------------------------------------------------------------------------------
1 | checkMark.animate().alpha(0f);
2 | bounds = new TransitionSet();
3 | bounds.setOrdering(ORDERING_TOGETHER);
4 | bounds.addTransition(new ChangeImageTransform())
5 | .addTransition(new ChangeBounds());;
6 | set = new TransitionSet();
7 | set.setOrdering(ORDERING_SEQUENTIAL);
8 | set.addTransition(bounds)
9 | .addTransition(new Slide(Gravity.BOTTOM));
10 | set.excludeTarget(R.id.checkMark, true);
11 | TransitionManager.go(scene2, set);
--------------------------------------------------------------------------------
/app/src/main/assets/source/scene_code2.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | checkMark.animate().alpha(0f);
13 | bounds = new TransitionSet();
14 | bounds.setOrdering(ORDERING_TOGETHER);
15 | bounds.addTransition(new ChangeImageTransform())
16 | .addTransition(new ChangeBounds());;
17 | set = new TransitionSet();
18 | set.setOrdering(ORDERING_SEQUENTIAL);
19 | set.addTransition(bounds)
20 | .addTransition(new Slide(Gravity.BOTTOM));
21 | set.excludeTarget(R.id.checkMark, true);
22 | TransitionManager.go(scene2, set);
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scene_transition.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scene_transition.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <!-- scene_transition.xml -->
13 | <transitionManager>
14 | <transition
15 | android:toScene="@layout/scene_scene2"
16 | android:transition="@transition/to_details" />
17 | <transition
18 | android:toScene="@layout/scene_scene1"
19 | android:transition="@transition/from_details" />
20 | </transitionManager>
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scenes1.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scenes1.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <!-- activity.xml -->
13 | <FrameLayout
14 | android:layout_width="match_parent"
15 | android:layout_height="match_parent"
16 | android:padding="8dp"
17 | android:id="@+id/root"
18 | android:gravity="center" >
19 | <include layout="@layout/scene1" />
20 | </FrameLayout>
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scenes2.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scenes2.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <!-- scene1.xml -->
13 | <RelativeLayout android:id="@+id/container"
14 | android:layout_width="match_parent"
15 | android:layout_height="match_parent">
16 | <ImageView android:id="@+id/checkMark" />
17 | <ImageView
18 | android:layout_width="match_parent"
19 | android:layout_height="360dp"
20 | android:layout_centerInParent="true"
21 | android:id="@+id/image" />
22 | </RelativeLayout>
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/scenes3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
8 |
10 |
12 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/slide_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/slide_left.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | <!-- slide_left.xml -->
14 | <slide xmlns:android="..." android:slideEdge="left" />
15 |
16 | <!-- getWindow().setExitTransition(
17 | inflater.inflateTransition(R.transition.slide_left)); -->
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | public static void beginDelayedTransition(ViewGroup container) {
13 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
14 | TransitionManager.beginDelayedTransition(container);
15 | }
16 |
17 | // https://github.com/guerwan/TransitionsBackport
18 | // Backport para a versão 4.x API 14+
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm1.java:
--------------------------------------------------------------------------------
1 | public static class GridTransition extends TransitionSet {
2 | public GridTransition() {
3 | TransitionSet bounds = new TransitionSet();
4 | bounds.addTransition(new ChangeBounds())
5 | .addTransition(new ChangeImageTransform())
6 | .addTransition(new ChangeVideoTransform());
7 | setOrdering(ORDERING_SEQUENTIAL);
8 | addTransition(new Fade(Fade.OUT)).
9 | addTransition(bounds).
10 | addTransition(new Fade(Fade.IN));
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm1.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | public static class GridTransition extends TransitionSet {
13 | public GridTransition() {
14 | TransitionSet bounds = new TransitionSet();
15 | bounds.addTransition(new ChangeBounds())
16 | .addTransition(new ChangeImageTransform())
17 | .addTransition(new ChangeVideoTransform());
18 | setOrdering(ORDERING_SEQUENTIAL);
19 | addTransition(new Fade(Fade.OUT)).
20 | addTransition(bounds).
21 | addTransition(new Fade(Fade.IN));
22 | }
23 | }
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm2.java:
--------------------------------------------------------------------------------
1 | private void captureValues(TransitionValues transitionValues) {
2 | View view = transitionValues.view;
3 | if (!(view instanceof TextureVideoView)) {
4 | return;
5 | }
6 | TextureVideoView videoView = (TextureVideoView) view;
7 | Map values = transitionValues.values;
8 |
9 | int left = view.getLeft(); ...
10 |
11 | Rect bounds = new Rect(left, top, right, bottom);
12 | values.put(PROPNAME_BOUNDS, bounds);
13 | Matrix matrix;
14 | matrix = new Matrix(videoView.getTransformMatrix());
15 | values.put(PROPNAME_MATRIX, matrix);
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm2.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | private void captureValues(TransitionValues transitionValues) {
13 | View view = transitionValues.view;
14 | if (!(view instanceof TextureVideoView)) {
15 | return;
16 | }
17 | TextureVideoView videoView = (TextureVideoView) view;
18 | Map<String, Object> values = transitionValues.values;
19 |
20 | int left = view.getLeft(); ...
21 |
22 | Rect bounds = new Rect(left, top, right, bottom);
23 | values.put(PROPNAME_BOUNDS, bounds);
24 | Matrix matrix;
25 | matrix = new Matrix(videoView.getTransformMatrix());
26 | values.put(PROPNAME_MATRIX, matrix);
27 | }
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm3.java:
--------------------------------------------------------------------------------
1 | @Override
2 | public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
3 | TransitionValues endValues) {
4 | if (startBounds == null || endBounds == null)
5 | return null;
6 |
7 | boolean matricesEqual = startMatrix.equals(endMatrix);
8 |
9 | if (startBounds.equals(endBounds) && matricesEqual)
10 | return null;
11 |
12 | ObjectAnimator animator;
13 | animator = createMatrixAnimator(videoView, startMatrix, endMatrix);
14 | return animator;
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm3.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | @Override
13 | public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues,
14 | TransitionValues endValues) {
15 | if (startBounds == null || endBounds == null)
16 | return null;
17 |
18 | boolean matricesEqual = startMatrix.equals(endMatrix);
19 |
20 | if (startBounds.equals(endBounds) && matricesEqual)
21 | return null;
22 |
23 | ObjectAnimator animator;
24 | animator = createMatrixAnimator(videoView, startMatrix, endMatrix);
25 | return animator;
26 | }
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm4.java:
--------------------------------------------------------------------------------
1 | private ObjectAnimator
2 | createMatrixAnimator(TextureVideoView videoView,
3 | Matrix startMatrix,
4 | Matrix endMatrix) {
5 | return ObjectAnimator.ofObject(videoView,
6 | ANIMATED_TRANSFORM_PROPERTY,
7 | new MatrixEvaluator(),
8 | startMatrix, endMatrix);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm4.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | private ObjectAnimator
13 | createMatrixAnimator(TextureVideoView videoView,
14 | Matrix startMatrix,
15 | Matrix endMatrix) {
16 | return ObjectAnimator.ofObject(videoView,
17 | ANIMATED_TRANSFORM_PROPERTY,
18 | new MatrixEvaluator(),
19 | startMatrix, endMatrix);
20 | }
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm5.java:
--------------------------------------------------------------------------------
1 | Property ANIMATED_TRANSFORM_PROPERTY
2 | = new Property(Matrix.class, "animatedTransform") {
3 |
4 | @Override
5 | public void set(TextureVideoView object, Matrix value) {
6 | object.setTransform(value);
7 | object.invalidate();
8 | }
9 |
10 | @Override
11 | public Matrix get(TextureVideoView object) {
12 | return null;
13 | }
14 | };
15 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm5.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Property<TextureVideoView, Matrix> ANIMATED_TRANSFORM_PROPERTY
13 | = new Property<TextureVideoView, Matrix>(Matrix.class, "animatedTransform") {
14 |
15 | @Override
16 | public void set(TextureVideoView object, Matrix value) {
17 | object.setTransform(value);
18 | object.invalidate();
19 | }
20 |
21 | @Override
22 | public Matrix get(TextureVideoView object) {
23 | return null;
24 | }
25 | };
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/tm6.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | class MatrixEvaluator implements TypeEvaluator<Matrix> {
13 | float[] mTempStartValues = new float[9];
14 | float[] mTempEndValues = new float[9];
15 | Matrix mTempMatrix = new Matrix();
16 | @Override
17 | public Matrix evaluate(float fraction, Matrix startValue, Matrix endValue) {
18 | startValue.getValues(mTempStartValues);
19 | endValue.getValues(mTempEndValues);
20 | for (int i = 0; i < 9; i++) {
21 | float diff = mTempEndValues[i] - mTempStartValues[i];
22 | mTempEndValues[i] = mTempStartValues[i] + (fraction * diff);
23 | }
24 | mTempMatrix.setValues(mTempEndValues);
25 | return mTempMatrix;
26 | }
27 | }
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/to_details.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/to_details.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <!-- to_details.xml -->
13 | <transitionSet transitionOrdering="sequential">
14 | <transitionSet transitionOrdering="together">
15 | <changeImageTransform />
16 | <changeBounds />
17 | <fade android:fadingMode="fade_out" />
18 | </transitionSet>
19 | <fade android:fadingMode="fade_in" />
20 | <targets>
21 | <target android:excludeId="@id/checkMark" />
22 | </targets>
23 | </transitionSet>
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/touch_anim.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <?xml version="1.0" encoding="utf-8"?>
13 |
14 | <selector
15 | xmlns:android="..."
16 | android:enterFadeDuration="400"
17 | android:exitFadeDuration="400">
18 | <item android:state_pressed="true"
19 | android:drawable="@color/ping" />
20 | <item android:drawable="@color/grey_dark" />
21 | </selector>
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/transitions.java:
--------------------------------------------------------------------------------
1 |
2 | // Provided Transitions
3 | Fade(Fade.IN|Fade.OUT);
4 | ChangeBounds(); // Size and position...
5 | ChangeClipBounds(); // clipBounds
6 | ChangeImageTransform(); // Image scaleType and scaling.
7 | ChangeScroll(); // scroll position
8 | ChangeTransform(); // views scale and rotation
9 | Explode(); //moves views in or out from the edges.
10 | Slide();
11 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/transitions.java.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | // Android Provided Transitions
14 | Fade(Fade.IN|Fade.OUT); // Views visibility...
15 | ChangeBounds(); // Size and position...
16 | ChangeClipBounds(); // clipBounds
17 | ChangeImageTransform(); // Image scaleType and scaling.
18 | ChangeScroll(); // scroll position
19 | ChangeTransform(); // views scale and rotation
20 | Explode(); //moves views in or out from the edges.
21 | Slide();
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/transitions.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <LinearLayout
13 | android:layout_width="match_parent"
14 | android:layout_height="match_parent"
15 | android:orientation="vertical"
16 | android:background="@color/pink"
17 | android:gravity="center"
18 | android:id="@+id/container">
19 |
20 | <TextView />
21 |
22 | <TextView />
23 | </LinearLayout>
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/assets/source/transitions2.xml.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | <LinearLayout
13 | android:layout_width="match_parent"
14 | android:layout_height="match_parent"
15 | android:orientation="vertical"
16 | android:background="@color/pink"
17 | android:animateLayoutChanges="true"
18 | android:gravity="center"
19 | android:id="@+id/container">
20 |
21 | <TextView />
22 |
23 | <TextView />
24 | </LinearLayout>
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/activity/FirstActivity.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.activity;
2 |
3 | import com.luciofm.presentation.droiconit.R;
4 | import com.luciofm.presentation.droiconit.fragment.ActivityTransitionFragment;
5 | import com.luciofm.presentation.droiconit.fragment.AwesomeFragment;
6 | import com.luciofm.presentation.droiconit.fragment.BaseFragment;
7 | import com.luciofm.presentation.droiconit.fragment.HelloFragment;
8 | import com.luciofm.presentation.droiconit.fragment.IntroFragment;
9 | import com.luciofm.presentation.droiconit.fragment.LayoutTransitionFragment;
10 | import com.luciofm.presentation.droiconit.fragment.MoreTransitionManagerFragment;
11 | import com.luciofm.presentation.droiconit.fragment.MoviesFragment;
12 | import com.luciofm.presentation.droiconit.fragment.MyselfFragment;
13 | import com.luciofm.presentation.droiconit.fragment.QuesionsFragment;
14 | import com.luciofm.presentation.droiconit.fragment.SceneFragment;
15 | import com.luciofm.presentation.droiconit.fragment.SlackFragment;
16 | import com.luciofm.presentation.droiconit.fragment.TransitionManagerFragment;
17 | import com.luciofm.presentation.droiconit.fragment.WorkFragment;
18 |
19 | import java.util.ArrayList;
20 |
21 | public class FirstActivity extends BaseActivity {
22 |
23 | @Override
24 | ArrayList> getFragmentsList() {
25 | ArrayList> fragments = new ArrayList<>();
26 | fragments.add(HelloFragment.class);
27 | fragments.add(MyselfFragment.class);
28 | fragments.add(WorkFragment.class);
29 | fragments.add(IntroFragment.class);
30 | fragments.add(LayoutTransitionFragment.class);
31 | fragments.add(TransitionManagerFragment.class);
32 | fragments.add(MoreTransitionManagerFragment.class);
33 | fragments.add(SceneFragment.class);
34 | fragments.add(ActivityTransitionFragment.class);
35 | fragments.add(MoviesFragment.class);
36 | fragments.add(AwesomeFragment.class);
37 | fragments.add(QuesionsFragment.class);
38 | fragments.add(SlackFragment.class);
39 | return fragments;
40 | }
41 |
42 | @Override
43 | int getContentViewId() {
44 | return R.layout.root;
45 | }
46 |
47 | @Override
48 | int getFragmentContainerId() {
49 | return R.id.fragmentContainer;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/activity/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.activity;
2 |
3 | import android.app.Activity;
4 | import android.app.KeyguardManager;
5 | import android.content.Intent;
6 | import android.os.Bundle;
7 | import android.os.PowerManager;
8 | import android.view.KeyEvent;
9 |
10 | import com.luciofm.presentation.droiconit.R;
11 | import com.luciofm.presentation.droiconit.fragment.BaseFragment;
12 |
13 | import butterknife.ButterKnife;
14 | import butterknife.OnClick;
15 |
16 | import static android.os.PowerManager.ACQUIRE_CAUSES_WAKEUP;
17 | import static android.os.PowerManager.FULL_WAKE_LOCK;
18 | import static android.os.PowerManager.ON_AFTER_RELEASE;
19 | import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
20 |
21 | public class MainActivity extends Activity {
22 | public static final int BUTTON_NEXT = 109;
23 | public static final int BUTTON_PREV = 104;
24 |
25 | @Override
26 | protected void onCreate(Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 | setContentView(R.layout.main_activity);
29 |
30 | ButterKnife.inject(this);
31 | }
32 |
33 | @Override
34 | protected void onStart() {
35 | // Unlock device on Debug/QA builds...
36 | unlockDevice(this);
37 | super.onStart();
38 | }
39 |
40 | public void unlockDevice(Activity activity) {
41 | KeyguardManager keyguardManager = (KeyguardManager) activity.getSystemService(KEYGUARD_SERVICE);
42 | final KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("Unlock!");
43 | keyguardLock.disableKeyguard();
44 |
45 | activity.getWindow().addFlags(FLAG_SHOW_WHEN_LOCKED);
46 |
47 | PowerManager powerManager = (PowerManager) activity.getSystemService(POWER_SERVICE);
48 | PowerManager.WakeLock wakeLock = powerManager.newWakeLock(FULL_WAKE_LOCK | ACQUIRE_CAUSES_WAKEUP | ON_AFTER_RELEASE, "Wakeup!");
49 | wakeLock.acquire();
50 | wakeLock.release();
51 | }
52 |
53 | @OnClick(R.id.button)
54 | public void onButtonClick() {
55 | startActivity(new Intent(this, FirstActivity.class));
56 | }
57 |
58 | @Override
59 | public boolean onKeyDown(int keyCode, KeyEvent event) {
60 | BaseFragment fragment = (BaseFragment) getFragmentManager().findFragmentByTag("current");
61 | int scanCode = event.getScanCode();
62 | switch (scanCode) {
63 | case BUTTON_NEXT:
64 | case 28:
65 | case 229:
66 | case 0x74:
67 | onButtonClick();
68 | return true;
69 | }
70 | return super.onKeyDown(keyCode, event);
71 | }
72 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/activity/ThanksActivity.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.activity;
2 |
3 | import android.os.Bundle;
4 |
5 | import com.luciofm.presentation.droiconit.R;
6 | import com.luciofm.presentation.droiconit.fragment.BaseFragment;
7 | import com.luciofm.presentation.droiconit.transitions.Pop;
8 |
9 | import java.util.ArrayList;
10 |
11 | public class ThanksActivity extends BaseActivity {
12 |
13 | @Override
14 | protected void onCreate(Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | getWindow().setEnterTransition(new Pop(false).addTarget(R.id.text1));
17 | }
18 |
19 | @Override
20 | ArrayList> getFragmentsList() {
21 | return null;
22 | }
23 |
24 | @Override
25 | int getContentViewId() {
26 | return R.layout.activity_thanks;
27 | }
28 |
29 | @Override
30 | int getFragmentContainerId() {
31 | return 0;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/anim/AlphaSpan.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.anim;
2 |
3 | import android.os.Parcel;
4 | import android.os.Parcelable;
5 | import android.text.TextPaint;
6 | import android.text.style.CharacterStyle;
7 | import android.text.style.UpdateAppearance;
8 |
9 | /**
10 | * Created by luciofm on 5/31/14.
11 | */
12 | public class AlphaSpan extends CharacterStyle implements UpdateAppearance, Parcelable {
13 |
14 | private int mAlpha = 0;
15 |
16 | public AlphaSpan(int alpha) {
17 | this.mAlpha = alpha;
18 | }
19 |
20 | public int getAlpha() {
21 | return mAlpha;
22 | }
23 |
24 | public void setAlpha(int alpha) {
25 | this.mAlpha = alpha;
26 | }
27 |
28 | @Override
29 | public void updateDrawState(TextPaint ds) {
30 | ds.setAlpha(mAlpha);
31 | }
32 |
33 | protected AlphaSpan(Parcel in) {
34 | mAlpha = in.readInt();
35 | }
36 |
37 | @Override
38 | public int describeContents() {
39 | return 0;
40 | }
41 |
42 | @Override
43 | public void writeToParcel(Parcel dest, int flags) {
44 | dest.writeInt(mAlpha);
45 | }
46 |
47 | @SuppressWarnings("unused")
48 | public static final Creator CREATOR = new Creator() {
49 | @Override
50 | public AlphaSpan createFromParcel(Parcel in) {
51 | return new AlphaSpan(in);
52 | }
53 |
54 | @Override
55 | public AlphaSpan[] newArray(int size) {
56 | return new AlphaSpan[size];
57 | }
58 | };
59 | }
60 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/anim/LayerEnablingAnimatorListener.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.anim;
2 |
3 | import android.animation.Animator;
4 | import android.animation.AnimatorListenerAdapter;
5 | import android.view.View;
6 |
7 | public class LayerEnablingAnimatorListener extends AnimatorListenerAdapter {
8 |
9 | private final View mTargetView;
10 |
11 | private int mLayerType;
12 |
13 | public LayerEnablingAnimatorListener(View targetView) {
14 | mTargetView = targetView;
15 | }
16 |
17 | public View getTargetView() {
18 | return mTargetView;
19 | }
20 |
21 | @Override
22 | public void onAnimationStart(Animator animation) {
23 | super.onAnimationStart(animation);
24 | mLayerType = mTargetView.getLayerType();
25 | mTargetView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
26 | }
27 |
28 | @Override
29 | public void onAnimationEnd(Animator animation) {
30 | super.onAnimationEnd(animation);
31 | mTargetView.setLayerType(mLayerType, null);
32 | }
33 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/anim/TextSizeSpan.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.anim;
2 |
3 | import android.os.Parcel;
4 | import android.text.ParcelableSpan;
5 | import android.text.TextPaint;
6 | import android.text.style.MetricAffectingSpan;
7 |
8 | /**
9 | * Created by luciofm on 9/23/14.
10 | */
11 | public class TextSizeSpan extends MetricAffectingSpan implements ParcelableSpan {
12 |
13 | private int mSize;
14 | private boolean mDip;
15 |
16 | /**
17 | * Set the text size to size
physical pixels.
18 | */
19 | public TextSizeSpan(int size) {
20 | mSize = size;
21 | }
22 |
23 | /**
24 | * Set the text size to size
physical pixels,
25 | * or to size
device-independent pixels if
26 | * dip
is true.
27 | */
28 | public TextSizeSpan(int size, boolean dip) {
29 | mSize = size;
30 | mDip = dip;
31 | }
32 |
33 | public TextSizeSpan(Parcel src) {
34 | mSize = src.readInt();
35 | mDip = src.readInt() != 0;
36 | }
37 |
38 | public int describeContents() {
39 | return 0;
40 | }
41 |
42 | public void writeToParcel(Parcel dest, int flags) {
43 | dest.writeInt(mSize);
44 | dest.writeInt(mDip ? 1 : 0);
45 | }
46 |
47 | public int getSize() {
48 | return mSize;
49 | }
50 |
51 | public boolean getDip() {
52 | return mDip;
53 | }
54 |
55 | public void setSize(int mSize) {
56 | this.mSize = mSize;
57 | }
58 |
59 | public void setDip(boolean mDip) {
60 | this.mDip = mDip;
61 | }
62 |
63 | @Override
64 | public void updateDrawState(TextPaint ds) {
65 | if (mDip) {
66 | ds.setTextSize(mSize * ds.density);
67 | } else {
68 | ds.setTextSize(mSize);
69 | }
70 | }
71 |
72 | @Override
73 | public void updateMeasureState(TextPaint ds) {
74 | if (mDip) {
75 | ds.setTextSize(mSize * ds.density);
76 | } else {
77 | ds.setTextSize(mSize);
78 | }
79 | }
80 |
81 | @Override
82 | public int getSpanTypeId() {
83 | return 0;
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/anim/XFractionProperty.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.anim;
2 |
3 | import android.util.Property;
4 | import android.view.View;
5 |
6 | public class XFractionProperty extends Property {
7 |
8 | public XFractionProperty() {
9 | super(Float.class, "fractionX");
10 | }
11 |
12 | @Override
13 | public Float get(View object) {
14 | final int viewWidth = object.getWidth();
15 | if (viewWidth == 0) {
16 | return 0f;
17 | }
18 |
19 | return object.getTranslationX() / viewWidth;
20 | }
21 |
22 | @Override
23 | public void set(View object, Float value) {
24 | final int viewWidth = object.getWidth();
25 | //Avoid flickers on entering views until they are measured
26 | float translation = viewWidth > 0 ? viewWidth * value : Float.MAX_VALUE;
27 |
28 | object.setTranslationX(translation);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/anim/YFractionProperty.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.anim;
2 |
3 | import android.util.Property;
4 | import android.view.View;
5 |
6 | public class YFractionProperty extends Property {
7 |
8 | public YFractionProperty() {
9 | super(Float.class, "fractionY");
10 | }
11 |
12 | @Override
13 | public Float get(View object) {
14 | final int viewHeight = object.getHeight();
15 | if (viewHeight == 0) {
16 | return 0f;
17 | }
18 |
19 | return object.getTranslationY() / viewHeight;
20 | }
21 |
22 | @Override
23 | public void set(View object, Float value) {
24 | final int viewHeight = object.getHeight();
25 | //Avoid flickers on entering views until they are measured
26 | float translation = viewHeight > 0 ? viewHeight * value : Float.MAX_VALUE;
27 |
28 | object.setTranslationY(translation);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/fragment/AwesomeFragment.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.fragment;
2 |
3 | import android.animation.Animator;
4 | import android.animation.ObjectAnimator;
5 | import android.os.Bundle;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 |
10 | import com.luciofm.presentation.droiconit.R;
11 | import com.luciofm.presentation.droiconit.activity.BaseActivity;
12 | import com.luciofm.presentation.droiconit.anim.XFractionProperty;
13 |
14 | import butterknife.ButterKnife;
15 | import butterknife.OnClick;
16 |
17 | public class AwesomeFragment extends BaseFragment {
18 |
19 | public AwesomeFragment() {
20 | }
21 |
22 | @Override
23 | public void onCreate(Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | }
26 |
27 | @Override
28 | public int getLayout() {
29 | return R.layout.fragment_awesome;
30 | }
31 |
32 | @Override
33 | public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
34 | View v = super.onCreateView(inflater, parent, savedInstanceState);
35 | ButterKnife.inject(this, v);
36 | currentStep = 1;
37 | return v;
38 | }
39 |
40 | @Override
41 | public void onNextPressed() {
42 | ((BaseActivity) getActivity()).nextFragment();
43 | }
44 |
45 | @OnClick(R.id.container)
46 | public void onClick() {
47 | onNextPressed();
48 | }
49 |
50 | @Override
51 | public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
52 | if (transit == 0 | enter) {
53 | return null;
54 | }
55 |
56 | //Target will be filled in by the framework
57 | return enter ? ObjectAnimator.ofFloat(null, new XFractionProperty(), 1f, 0f) :
58 | ObjectAnimator.ofFloat(null, new XFractionProperty(), 0f, -1f);
59 | }
60 |
61 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/fragment/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.fragment;
2 |
3 | import android.app.Fragment;
4 | import android.os.Bundle;
5 | import android.view.LayoutInflater;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 |
9 | import com.luciofm.presentation.droiconit.activity.BaseActivity;
10 |
11 | import butterknife.ButterKnife;
12 |
13 | public abstract class BaseFragment extends Fragment {
14 |
15 | protected int currentStep = 1;
16 |
17 | public abstract int getLayout();
18 |
19 | @Override
20 | public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
21 | currentStep = 1;
22 | return inflater.inflate(getLayout(), parent, false);
23 | }
24 |
25 | @Override
26 | public void onDestroyView() {
27 | ButterKnife.reset(this);
28 | super.onDestroyView();
29 | }
30 |
31 | public void onNextPressed() {
32 | ((BaseActivity) getActivity()).nextFragment();
33 | }
34 |
35 | public void onPrevPressed() {
36 | getActivity().onBackPressed();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/fragment/HelloFragment.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.fragment;
2 |
3 | import android.animation.Animator;
4 | import android.animation.ObjectAnimator;
5 | import android.os.Bundle;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 |
10 | import com.luciofm.presentation.droiconit.R;
11 | import com.luciofm.presentation.droiconit.activity.BaseActivity;
12 | import com.luciofm.presentation.droiconit.anim.XFractionProperty;
13 |
14 | import butterknife.ButterKnife;
15 | import butterknife.OnClick;
16 |
17 | public class HelloFragment extends BaseFragment {
18 |
19 | public HelloFragment() {
20 | }
21 |
22 | @Override
23 | public void onCreate(Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | }
26 |
27 | @Override
28 | public int getLayout() {
29 | return R.layout.fragment_hello;
30 | }
31 |
32 | @Override
33 | public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
34 | View v = super.onCreateView(inflater, parent, savedInstanceState);
35 | ButterKnife.inject(this, v);
36 | currentStep = 1;
37 | return v;
38 | }
39 |
40 | @Override
41 | public void onNextPressed() {
42 | ((BaseActivity) getActivity()).nextFragment();
43 | }
44 |
45 | @OnClick(R.id.container)
46 | public void onClick() {
47 | onNextPressed();
48 | }
49 |
50 | @Override
51 | public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
52 | if (transit == 0 | enter) {
53 | return null;
54 | }
55 |
56 | //Target will be filled in by the framework
57 | return ObjectAnimator.ofFloat(null, new XFractionProperty(), 0f, -1f);
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/fragment/ItemAdapter.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.fragment;
2 |
3 | import android.content.Context;
4 | import android.content.res.ColorStateList;
5 | import android.graphics.Bitmap;
6 | import android.graphics.BitmapFactory;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.ArrayAdapter;
11 | import android.widget.ImageView;
12 | import android.widget.TextView;
13 | import android.widget.Toast;
14 |
15 | import com.luciofm.presentation.droiconit.R;
16 | import com.luciofm.presentation.droiconit.model.Item;
17 | import com.luciofm.presentation.droiconit.util.Utils;
18 |
19 | import java.util.List;
20 |
21 | import butterknife.ButterKnife;
22 | import butterknife.InjectView;
23 |
24 | public class ItemAdapter extends ArrayAdapter- {
25 |
26 | private final Bitmap bitmap;
27 |
28 | public ItemAdapter(Context context, List
- objects) {
29 | super(context, 0, objects);
30 | bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_image);
31 | }
32 |
33 | @Override
34 | public View getView(int position, View convertView, ViewGroup parent) {
35 | View v = convertView;
36 | ViewHolder holder;
37 |
38 | if (convertView == null) {
39 | v = LayoutInflater.from(getContext()).inflate(R.layout.grid_item, parent, false);
40 | holder = new ViewHolder(v);
41 | } else
42 | holder = (ViewHolder) v.getTag();
43 |
44 |
45 | Item item = holder.item = getItem(position);
46 | holder.position = position;
47 |
48 | final int color = getContext().getResources().getColor(item.getColor());
49 |
50 | holder.image.setImageBitmap(bitmap);
51 | holder.image.setImageTintList(ColorStateList.valueOf(color));
52 | holder.text1.setTextColor(color);
53 | holder.text1.setText(item.getTitle());
54 | Utils.colorRippleBackground(v, color, color);
55 |
56 | return v;
57 | }
58 |
59 | public class ViewHolder {
60 | @InjectView(R.id.thumb)
61 | ImageView image;
62 | @InjectView(R.id.text1)
63 | TextView text1;
64 |
65 | int position;
66 | Item item;
67 |
68 | public ViewHolder(View v) {
69 | ButterKnife.inject(this, v);
70 | v.setTag(this);
71 | v.setOnClickListener(clickListener);
72 | }
73 |
74 | View.OnClickListener clickListener = new View.OnClickListener() {
75 | @Override
76 | public void onClick(View v) {
77 | Toast.makeText(getContext(), "Clicked(2): " + position, Toast.LENGTH_SHORT).show();
78 | //handleClick((ViewHolder) v.getTag());
79 | }
80 | };
81 | }
82 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/fragment/SlackFragment.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.fragment;
2 |
3 | import android.animation.Animator;
4 | import android.animation.ObjectAnimator;
5 | import android.os.Bundle;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 |
10 | import com.luciofm.presentation.droiconit.R;
11 | import com.luciofm.presentation.droiconit.activity.BaseActivity;
12 | import com.luciofm.presentation.droiconit.anim.XFractionProperty;
13 |
14 | import butterknife.ButterKnife;
15 | import butterknife.OnClick;
16 |
17 | public class SlackFragment extends BaseFragment {
18 |
19 | public SlackFragment() {
20 | }
21 |
22 | @Override
23 | public void onCreate(Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | }
26 |
27 | @Override
28 | public int getLayout() {
29 | return R.layout.fragment_slack;
30 | }
31 |
32 | @Override
33 | public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
34 | View v = super.onCreateView(inflater, parent, savedInstanceState);
35 | ButterKnife.inject(this, v);
36 | currentStep = 1;
37 | return v;
38 | }
39 |
40 | @Override
41 | public void onNextPressed() {
42 | ((BaseActivity) getActivity()).nextFragment();
43 | }
44 |
45 | @OnClick(R.id.container)
46 | public void onClick() {
47 | onNextPressed();
48 | }
49 |
50 | @Override
51 | public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
52 | if (transit == 0 | enter) {
53 | return null;
54 | }
55 |
56 | //Target will be filled in by the framework
57 | return ObjectAnimator.ofFloat(null, new XFractionProperty(), 0f, -1f);
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/fragment/WorkFragment.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.fragment;
2 |
3 |
4 | import android.animation.Animator;
5 | import android.animation.ObjectAnimator;
6 | import android.app.Fragment;
7 | import android.os.Bundle;
8 | import android.view.LayoutInflater;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 | import android.widget.ImageView;
12 |
13 | import com.luciofm.presentation.droiconit.R;
14 | import com.luciofm.presentation.droiconit.anim.YFractionProperty;
15 |
16 | import butterknife.ButterKnife;
17 | import butterknife.InjectView;
18 | import butterknife.OnClick;
19 |
20 | /**
21 | * A simple {@link Fragment} subclass.
22 | *
23 | */
24 | public class WorkFragment extends BaseFragment {
25 |
26 | @InjectView(R.id.imageWhi1)
27 | ImageView imageWhi1;
28 | @InjectView(R.id.imageWhi2)
29 | ImageView imageWhi2;
30 |
31 | public WorkFragment() {
32 | // Required empty public constructor
33 | }
34 |
35 | @Override
36 | public int getLayout() {
37 | return R.layout.fragment_work;
38 | }
39 |
40 | @Override
41 | public View onCreateView(LayoutInflater inflater, ViewGroup parent,
42 | Bundle savedInstanceState) {
43 | View v = super.onCreateView(inflater, parent, savedInstanceState);
44 | ButterKnife.inject(this, v);
45 |
46 | imageWhi1.animate().alpha(1f).setDuration(200).start();
47 |
48 | v.postOnAnimationDelayed(new Runnable() {
49 | @Override
50 | public void run() {
51 | if (!isAdded())
52 | return;
53 | imageWhi1.animate().alpha(0f).setDuration(1000).start();
54 | imageWhi2.animate().alpha(1f).setDuration(1000).start();
55 | }
56 | }, 200);
57 |
58 | currentStep = 1;
59 | return v;
60 | }
61 |
62 | @Override
63 | public void onNextPressed() {
64 | super.onNextPressed();
65 | }
66 |
67 | @OnClick(R.id.container)
68 | public void onClick() {
69 | onNextPressed();
70 | }
71 |
72 | @Override
73 | public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
74 | if (transit == 0) {
75 | return null;
76 | }
77 |
78 | //Target will be filled in by the framework
79 | return enter ? null :
80 | ObjectAnimator.ofFloat(null, new YFractionProperty(), 0f, -1f);
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/model/Entry.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.model;
2 |
3 | /**
4 | * Created by luciofm on 27/08/15.
5 | */
6 | public class Entry {
7 | public static final int TYPE_IMAGE = 0;
8 | public static final int TYPE_VIDEO = 1;
9 |
10 | private int type;
11 | private int imageId;
12 | private String videoUrl;
13 |
14 | public Entry(int imageId) {
15 | type = TYPE_IMAGE;
16 | this.imageId = imageId;
17 | }
18 |
19 | public Entry(int imageId, String videoUrl) {
20 | type = TYPE_VIDEO;
21 | this.imageId = imageId;
22 | this.videoUrl = "android.resource://com.luciofm.presentation.droiconit/raw/" + videoUrl;
23 | }
24 |
25 | public int getType() {
26 | return type;
27 | }
28 |
29 | public int getImageId() {
30 | return imageId;
31 | }
32 |
33 | public String getVideoUrl() {
34 | return videoUrl;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/model/Item.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.model;
2 |
3 | import org.parceler.Parcel;
4 |
5 | @Parcel
6 | public class Item {
7 | String title;
8 | int color;
9 |
10 | public Item() {
11 | }
12 |
13 | public Item(String title, int color) {
14 | this.title = title;
15 | this.color = color;
16 | }
17 |
18 | public String getTitle() {
19 | return title;
20 | }
21 |
22 | public int getColor() {
23 | return color;
24 | }
25 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/model/Items.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.model;
2 |
3 | import com.luciofm.presentation.droiconit.R;
4 |
5 | import java.util.ArrayList;
6 |
7 | /**
8 | * Created by luciofm on 3/31/15.
9 | */
10 | public class Items {
11 | public static ArrayList
- items;
12 |
13 | static {
14 | items = new ArrayList<>();
15 |
16 | items.add(new Item("Shared Element", R.color.vibrant_rgb));
17 | items.add(new Item("Exit transition", R.color.dark_muted_rgb));
18 | items.add(new Item("Exit+Enter", R.color.dark_vibrant_rgb));
19 | items.add(new Item("Return", R.color.light_vibrant_rgb));
20 | items.add(new Item("Reenter", R.color.light_muted_rgb));
21 | items.add(new Item("Everything", R.color.muted_rgb));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/model/Movie.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.model;
2 |
3 | import org.parceler.Parcel;
4 |
5 | @Parcel
6 | public class Movie {
7 | public String title;
8 | public String year;
9 | public int resId;
10 | public int sceneId;
11 |
12 | public Movie() {
13 | }
14 |
15 | public Movie(String title, String year, int resId, int sceneId) {
16 | this.title = title;
17 | this.year = year;
18 | this.resId = resId;
19 | this.sceneId = sceneId;
20 | }
21 |
22 | public String getTitle() {
23 | return title;
24 | }
25 |
26 | public String getYear() {
27 | return year;
28 | }
29 |
30 | public int getResId() {
31 | return resId;
32 | }
33 |
34 | public int getSceneId() {
35 | return sceneId;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/model/Movies.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.model;
2 |
3 | import com.luciofm.presentation.droiconit.R;
4 |
5 | import java.util.ArrayList;
6 |
7 | /**
8 | * Created by luciofm on 1/28/15.
9 | */
10 | public class Movies {
11 |
12 | public static ArrayList movies;
13 |
14 | static {
15 | movies = new ArrayList<>();
16 |
17 |
18 | movies.add(new Movie("The Big Lebowski",
19 | "1998",
20 | R.drawable.lebowski_ver2,
21 | R.drawable.lebowski_scene_02));
22 |
23 | movies.add(new Movie("Crazy Heart",
24 | "2009",
25 | R.drawable.crazy_heart,
26 | R.drawable.crazy_heart_scene_01));
27 |
28 | movies.add(new Movie("True Grit",
29 | "2010",
30 | R.drawable.true_grit,
31 | R.drawable.true_grit_scene_01));
32 |
33 | movies.add(new Movie("The Men Who Stare at Goats ",
34 | "2009",
35 | R.drawable.goats,
36 | R.drawable.goats_scene_02));
37 |
38 | movies.add(new Movie("Arlington Road",
39 | "1999",
40 | R.drawable.arlington,
41 | R.drawable.arlington_scene_02));
42 |
43 | movies.add(new Movie("Tron",
44 | "1982",
45 | R.drawable.tron,
46 | R.drawable.tron_screen_01));
47 |
48 | movies.add(new Movie("Tron Legacy",
49 | "2010",
50 | R.drawable.tron_legacy,
51 | R.drawable.tron_legacy_02));
52 |
53 | movies.add(new Movie("Iron Man",
54 | "2008",
55 | R.drawable.iron_man,
56 | R.drawable.iron_man_scene));
57 | movies.add(new Movie("Surf's up",
58 | "2007",
59 | R.drawable.surfs_up,
60 | R.drawable.surfs_up_scene));
61 | movies.add(new Movie("Seabiscuit",
62 | "2003",
63 | R.drawable.seabiscuit,
64 | R.drawable.seabiscuit_scene));
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/transitions/NoTransition.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.transitions;
2 |
3 | import android.animation.Animator;
4 | import android.transition.Transition;
5 | import android.transition.TransitionValues;
6 | import android.view.ViewGroup;
7 |
8 | /**
9 | * Created by luciofm on 3/27/15.
10 | */
11 | public class NoTransition extends Transition {
12 | @Override
13 | public void captureStartValues(TransitionValues transitionValues) {
14 | }
15 |
16 | @Override
17 | public void captureEndValues(TransitionValues transitionValues) {
18 | }
19 |
20 | @Override
21 | public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) {
22 | return super.createAnimator(sceneRoot, startValues, endValues);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/transitions/Pop.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.transitions;
2 |
3 | import android.animation.Animator;
4 | import android.animation.ObjectAnimator;
5 | import android.animation.PropertyValuesHolder;
6 | import android.transition.TransitionValues;
7 | import android.transition.Visibility;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.view.animation.AnticipateInterpolator;
11 | import android.view.animation.DecelerateInterpolator;
12 | import android.view.animation.OvershootInterpolator;
13 |
14 | /**
15 | * Created by luciofm on 10/27/14.
16 | */
17 | public class Pop extends Visibility {
18 | private boolean overshoot = true;
19 |
20 | public Pop(boolean overshoot) {
21 | super();
22 | this.overshoot = overshoot;
23 | }
24 |
25 | public Pop() {
26 | this(true);
27 | }
28 |
29 | @Override
30 | public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
31 | view.setScaleX(0f);
32 | view.setScaleY(0f);
33 |
34 | PropertyValuesHolder[] pvh = new PropertyValuesHolder[2];
35 | pvh[0] = PropertyValuesHolder.ofFloat(View.SCALE_X, 1f);
36 | pvh[1] = PropertyValuesHolder.ofFloat(View.SCALE_Y, 1f);
37 |
38 | ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(view, pvh);
39 | anim.setInterpolator(overshoot ? new OvershootInterpolator() : new DecelerateInterpolator());
40 |
41 | return anim;
42 | }
43 |
44 | @Override
45 | public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
46 | PropertyValuesHolder[] pvh = new PropertyValuesHolder[2];
47 | pvh[0] = PropertyValuesHolder.ofFloat(View.SCALE_X, 0f);
48 | pvh[1] = PropertyValuesHolder.ofFloat(View.SCALE_Y, 0f);
49 |
50 | ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(view, pvh);
51 | anim.setInterpolator(overshoot ? new AnticipateInterpolator() : new DecelerateInterpolator());
52 |
53 | return anim;
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/transitions/TransitionListenerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.transitions;
2 |
3 | import android.transition.Transition;
4 |
5 | public class TransitionListenerAdapter implements Transition.TransitionListener {
6 | @Override
7 | public void onTransitionStart(Transition transition) {
8 | }
9 |
10 | @Override
11 | public void onTransitionEnd(Transition transition) {
12 | }
13 |
14 | @Override
15 | public void onTransitionCancel(Transition transition) {
16 | }
17 |
18 | @Override
19 | public void onTransitionPause(Transition transition) {
20 | }
21 |
22 | @Override
23 | public void onTransitionResume(Transition transition) {
24 | }
25 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/transitions/ZoomOut.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.transitions;
2 |
3 | import android.animation.Animator;
4 | import android.animation.ObjectAnimator;
5 | import android.animation.PropertyValuesHolder;
6 | import android.transition.TransitionValues;
7 | import android.transition.Visibility;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.view.animation.AnticipateInterpolator;
11 | import android.view.animation.OvershootInterpolator;
12 |
13 | public class ZoomOut extends Visibility {
14 | @Override
15 | public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
16 | view.setScaleX(12f);
17 | view.setScaleY(12f);
18 | view.setAlpha(0f);
19 |
20 | PropertyValuesHolder[] pvh = new PropertyValuesHolder[3];
21 | pvh[0] = PropertyValuesHolder.ofFloat(View.SCALE_X, 1f);
22 | pvh[1] = PropertyValuesHolder.ofFloat(View.SCALE_Y, 1f);
23 | pvh[2] = PropertyValuesHolder.ofFloat(View.ALPHA, 1f);
24 |
25 | ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(view, pvh);
26 | anim.setInterpolator(new OvershootInterpolator());
27 |
28 | return anim;
29 | }
30 |
31 | @Override
32 | public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
33 | PropertyValuesHolder[] pvh = new PropertyValuesHolder[3];
34 | pvh[0] = PropertyValuesHolder.ofFloat(View.SCALE_X, 12f);
35 | pvh[1] = PropertyValuesHolder.ofFloat(View.SCALE_Y, 12f);
36 | pvh[2] = PropertyValuesHolder.ofFloat(View.ALPHA, 0f);
37 |
38 | ObjectAnimator anim = ObjectAnimator.ofPropertyValuesHolder(view, pvh);
39 | anim.setInterpolator(new AnticipateInterpolator());
40 |
41 | return anim;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/util/CircleTransformation.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.util;
2 |
3 | import android.graphics.Bitmap;
4 | import android.graphics.Bitmap.Config;
5 | import android.graphics.BitmapShader;
6 | import android.graphics.Canvas;
7 | import android.graphics.Paint;
8 | import android.graphics.Shader;
9 |
10 | import com.squareup.picasso.Transformation;
11 |
12 | public class CircleTransformation implements Transformation {
13 |
14 |
15 | public CircleTransformation() {
16 | }
17 |
18 | @Override
19 | public Bitmap transform(final Bitmap source) {
20 | final Paint paint = new Paint();
21 | paint.setAntiAlias(true);
22 | paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
23 |
24 | final Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888);
25 | final Canvas canvas = new Canvas(output);
26 | canvas.drawCircle(source.getWidth() / 2, source.getHeight() / 2, source.getWidth() / 2, paint);
27 |
28 | if (source != output)
29 | source.recycle();
30 |
31 | return output;
32 | }
33 |
34 | @Override
35 | public String key() {
36 | return "circle";
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/util/IOUtils.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.util;
2 |
3 | import android.content.Context;
4 | import android.content.res.AssetManager;
5 |
6 | import java.io.IOException;
7 | import java.io.InputStream;
8 |
9 | /**
10 | * Created by luciofm on 5/25/14.
11 | */
12 | public class IOUtils {
13 |
14 | private IOUtils() {
15 | }
16 |
17 | public static InputStream openAssetFile(Context context, String file) throws IOException {
18 | AssetManager assetManager = context.getAssets();
19 |
20 | return assetManager.open(file);
21 |
22 | }
23 |
24 | public static String readFile(Context context, String file) {
25 | InputStream is;
26 |
27 | try {
28 | is = openAssetFile(context, file);
29 | return org.apache.commons.io.IOUtils.toString(is);
30 | } catch (IOException e) {
31 | e.printStackTrace();
32 | }
33 |
34 | return "";
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/util/TopCropTransformation.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.util;
2 |
3 | import android.graphics.Bitmap;
4 | import android.graphics.Matrix;
5 | import android.widget.ImageView;
6 |
7 | import com.squareup.picasso.Transformation;
8 |
9 | // Like centerCrop() but keeps image aligned at the top.
10 | public class TopCropTransformation implements Transformation {
11 |
12 | private ImageView target;
13 |
14 | public TopCropTransformation(ImageView target) {
15 | this.target = target;
16 | }
17 |
18 | @Override public Bitmap transform(Bitmap result) {
19 | int inWidth = result.getWidth();
20 | int inHeight = result.getHeight();
21 | float widthRatio = target.getWidth() / (float) inWidth;
22 | float heightRatio = target.getHeight() / (float) inHeight;
23 | int drawWidth = inWidth;
24 | int drawHeight = inHeight;
25 | float scale;
26 | int drawX = 0;
27 | Matrix matrix = new Matrix();
28 | if (widthRatio > heightRatio) {
29 | scale = widthRatio;
30 | drawHeight = (int) Math.ceil(inHeight * (heightRatio / widthRatio));
31 | } else {
32 | scale = heightRatio;
33 | int newSize = (int) Math.ceil(inWidth * (widthRatio / heightRatio));
34 | drawX = (inWidth - newSize) / 2;
35 | drawWidth = newSize;
36 | }
37 | matrix.preScale(scale, scale);
38 |
39 | // Amazon devices are causing java.lang.IllegalArgumentException: width must be > 0
40 | // Remote log all the input information and return the original image...
41 | if (drawWidth <= 0) {
42 | return result;
43 | }
44 |
45 | Bitmap newResult = Bitmap.createBitmap(result, drawX, 0, drawWidth, drawHeight, matrix, true);
46 | if (newResult != result) {
47 | result.recycle();
48 | result = newResult;
49 | }
50 |
51 | return result;
52 | }
53 |
54 | @Override public String key() {
55 | return "" + target.getWidth() + target.getHeight();
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/util/TypefaceCache.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.util;
2 |
3 | import android.content.Context;
4 | import android.graphics.Typeface;
5 |
6 | import java.util.HashMap;
7 |
8 | /**
9 | * Created by luciofm on 3/24/15.
10 | */
11 | public class TypefaceCache {
12 | private static HashMap typefaces = new HashMap<>();
13 |
14 | public static Typeface getTypeface(Context context, String typeface) {
15 | Typeface tf = typefaces.get(typeface);
16 | if (tf == null) {
17 | tf = Typeface.createFromAsset(context.getAssets(), "fonts/" + typeface);
18 |
19 | if (tf == null)
20 | tf = Typeface.DEFAULT;
21 |
22 | typefaces.put(typeface, tf);
23 | }
24 |
25 | return tf;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/luciofm/presentation/droiconit/widget/TextView.java:
--------------------------------------------------------------------------------
1 | package com.luciofm.presentation.droiconit.widget;
2 |
3 | import android.content.Context;
4 | import android.content.res.TypedArray;
5 | import android.graphics.Typeface;
6 | import android.text.TextUtils;
7 | import android.util.AttributeSet;
8 |
9 | import com.luciofm.presentation.droiconit.R;
10 | import com.luciofm.presentation.droiconit.util.TypefaceCache;
11 |
12 | public class TextView extends android.widget.TextView {
13 |
14 | public TextView(Context context) {
15 | super(context);
16 | }
17 |
18 | public TextView(Context context, AttributeSet attrs) {
19 | this(context, attrs, 0);
20 | }
21 |
22 | public TextView(Context context, AttributeSet attrs, int defStyle) {
23 | super(context, attrs, defStyle);
24 | setupFont(context, attrs);
25 | }
26 |
27 | private void setupFont(Context context, AttributeSet attrs) {
28 | if (isInEditMode())
29 | return;
30 |
31 | TypedArray ta = null;
32 | try {
33 | ta = context.obtainStyledAttributes(attrs, R.styleable.TextView);
34 | String typeFace = ta.getString(R.styleable.TextView_typeFace);
35 | setTypeface(typeFace);
36 | } finally {
37 | if (ta != null)
38 | ta.recycle();
39 | }
40 | }
41 |
42 | public void setTypeface(String typeface) {
43 | if (!TextUtils.isEmpty(typeface)) {
44 | Typeface tf = TypefaceCache.getTypeface(getContext(), typeface);
45 | setTypeface(tf);
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/android_flag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/android_flag.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/arlington.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/arlington.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/arlington_scene_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/arlington_scene_02.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/awesome.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/awesome.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/crazy_heart.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/crazy_heart.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/crazy_heart_scene_01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/crazy_heart_scene_01.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dog_year.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/dog_year.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/dog_year_scene.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/dog_year_scene.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/goats.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/goats.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/goats_scene_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/goats_scene_02.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/iron_man.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/iron_man.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/iron_man_scene.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/iron_man_scene.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/lebowski.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/lebowski.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/lebowski_scene_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/lebowski_scene_02.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/lebowski_ver2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/lebowski_ver2.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/lucio_badge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/lucio_badge.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/rallat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/rallat.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/seabiscuit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/seabiscuit.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/seabiscuit_scene.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/seabiscuit_scene.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/stick_it.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/stick_it.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/surfs_up.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/surfs_up.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/surfs_up_scene.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/surfs_up_scene.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/toggle_facebook_active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/toggle_facebook_active.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/toggle_facebook_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/toggle_facebook_inactive.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/toggle_twitter_inactive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/toggle_twitter_inactive.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/tron.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/tron.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/tron_legacy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/tron_legacy.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/tron_legacy_02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/tron_legacy_02.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/tron_screen_01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/tron_screen_01.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/true_grit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/true_grit.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/true_grit_scene_01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/true_grit_scene_01.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/whi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/whi.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/whi_blur.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-hdpi/whi_blur.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/image8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/image8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/video8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-nodpi/video8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/me.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable-xxhdpi/me.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/solid_with_border.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/border.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check_white_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable/ic_check_white_48dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable/ic_image.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_image_crop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/drawable/ic_image_crop.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/item_background_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
19 |
-
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ripple_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ripple_press.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | -
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_circle_placeholder.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_round_corners.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/vibrant_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_thanks.xml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/canvas_grid_entry.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_awesome.xml:
--------------------------------------------------------------------------------
1 |
15 |
16 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_hello.xml:
--------------------------------------------------------------------------------
1 |
15 |
16 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_intro.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
22 |
31 |
41 |
42 |
52 |
53 |
54 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_movies.xml:
--------------------------------------------------------------------------------
1 |
7 |
16 |
25 |
31 |
37 |
38 |
51 |
52 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_myself.xml:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_slack.xml:
--------------------------------------------------------------------------------
1 |
15 |
16 |
21 |
22 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_work.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
16 |
17 |
22 |
29 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/grid_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/main_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/movie_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
21 |
22 |
29 |
30 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/root.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/scene_myself_1.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/scene_myself_2.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
14 |
26 |
37 |
48 |
49 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/scene_scene1.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
14 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/text_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_details.xml:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_first.xml:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main.xml:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_movies.xml:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_thanks.xml:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/raw/video1.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video1.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video2.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video2.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video3.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video3.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video4.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video4.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video5.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video5.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video6.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video6.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video7.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video7.mp4
--------------------------------------------------------------------------------
/app/src/main/res/raw/video8.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/app/src/main/res/raw/video8.mp4
--------------------------------------------------------------------------------
/app/src/main/res/transition/explode.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/fade.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/from_details.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/move.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/move_arc.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
18 |
19 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/move_path.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/no_transition.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/scene_transition.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/slide_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/slide_left.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/slide_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/slide_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/transition/to_details.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #ffffffff
5 | #E0E0E0
6 | #Efffffff
7 |
8 | #ff97a3a5
9 | #7f000000
10 | #a7000000
11 |
12 | #ff438626
13 | #9f000000
14 | #f7000000
15 |
16 | #ff46bafa
17 | #77000000
18 | #9f000000
19 |
20 | #ff2e465b
21 | #6fffffff
22 | #97ffffff
23 |
24 | #ff5c96a2
25 | #87000000
26 | #bf000000
27 |
28 | #fff7d44b
29 | #6f000000
30 | #97000000
31 |
32 | #ff396f96
33 | #9fffffff
34 | #dfffffff
35 |
36 | #ff212825
37 | #57ffffff
38 | #7fffffff
39 |
40 | #ff926776
41 | #a7ffffff
42 | #f7ffffff
43 |
44 | #ff9e9459
45 | #87000000
46 | #b7000000
47 |
48 | #ff5c7e6f
49 | #9f000000
50 | #f7000000
51 |
52 | #ffe3636f
53 | #87000000
54 | #b7000000
55 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 | 32dp
7 |
8 | 160dp
9 |
10 | 150sp
11 | 120sp
12 | 90sp
13 | 70sp
14 | 50sp
15 | 35sp
16 |
17 | 80dp
18 | 60dp
19 | 40dp
20 | 20dp
21 | 16dp
22 | 8dp
23 |
24 | 60dp
25 |
26 | 1dp
27 | 2dp
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | From This To Thaht
3 |
4 | Hello world!
5 | Settings
6 | FirstActivity
7 |
8 |
9 | Hello blank fragment
10 | ThanksActivity
11 | MoviesActivity
12 | DetailsActivity
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
26 |
27 |
34 |
35 |
43 |
44 |
46 |
47 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:1.1.0'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | maven { url 'http://maven2.luciofm.com/whi-repo' }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/fromthistothat.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/fromthistothat.apk
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/luciofm/AndroidDevConf2015/e1d4d7983b0e7b7f33ec5a5b4bffa39657c8f08c/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Apr 10 15:27:10 PDT 2013
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------