├── app
├── .gitignore
├── src
│ └── main
│ │ ├── res
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── drawable
│ │ │ ├── circle.xml
│ │ │ └── ic_launcher_background.xml
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── values
│ │ │ ├── strings.xml
│ │ │ ├── colors.xml
│ │ │ └── themes.xml
│ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── item_color.xml
│ │ │ ├── final_fragment_splash.xml
│ │ │ ├── fragment_splash.xml
│ │ │ └── wso3_fragment.xml
│ │ ├── values-night
│ │ │ └── themes.xml
│ │ ├── xml
│ │ │ ├── ws04_animation_todo_01.xml
│ │ │ ├── ws04_animation_todo_02.xml
│ │ │ ├── ws04_animation_todo_03.xml
│ │ │ ├── ws04_solution_animation.xml
│ │ │ └── ws04_animation_todo_04.xml
│ │ └── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ ├── java
│ │ └── com
│ │ │ └── android
│ │ │ └── academy
│ │ │ └── fundamentals
│ │ │ ├── workshop03
│ │ │ ├── ObjectAnimatorHelper.kt
│ │ │ ├── ColorsAdapter.kt
│ │ │ ├── WS03Fragment.kt
│ │ │ ├── solution
│ │ │ │ ├── WS03SolutionFragment.kt
│ │ │ │ └── SolutionColorItemAnimator.kt
│ │ │ ├── ColorItemAnimator.kt
│ │ │ └── ColorsHelper.kt
│ │ │ ├── MainActivity.kt
│ │ │ └── ws4
│ │ │ ├── solution
│ │ │ └── WS04SolutionFragment.kt
│ │ │ └── WS04Fragment.kt
│ │ └── AndroidManifest.xml
├── proguard-rules.pro
└── build.gradle
├── settings.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── README.md
├── gradle.properties
├── .gitignore
├── gradlew.bat
└── gradlew
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "FundamentalsAssignments"
3 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Android-Academy-Global/fundamentals-2020-assignments/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # fundamentals-2020-assignments
2 | This repository will contain assignments for workshops of Fundamentals 2020 Course
3 |
4 | Read [wiki](https://github.com/Android-Academy-Global/fundamentals-2020-assignments/wiki)!
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Oct 29 16:43:45 MSK 2020
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-6.5-bin.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | FundamentalsAssignments
3 |
4 | Predictive Animations
5 | Custom Animator
6 | Change
7 | Add
8 | Delete
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFBB86FC
4 | #FF6200EE
5 | #FF3700B3
6 | #FF03DAC5
7 | #FF018786
8 | #FF000000
9 | #FFFFFFFF
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/android/academy/fundamentals/workshop03/ObjectAnimatorHelper.kt:
--------------------------------------------------------------------------------
1 | package com.android.academy.fundamentals.workshop03
2 |
3 | import android.animation.ArgbEvaluator
4 | import android.animation.ObjectAnimator
5 |
6 | object ObjectAnimatorHelper {
7 | fun ofArgb(target: Any, propertyName: String, vararg values: Int): ObjectAnimator {
8 | val animator = ObjectAnimator.ofInt(target, propertyName, *values)
9 | animator.setEvaluator(ArgbEvaluator())
10 | return animator
11 | }
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/android/academy/fundamentals/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.android.academy.fundamentals
2 |
3 | import android.os.Bundle
4 | import androidx.appcompat.app.AppCompatActivity
5 | import androidx.fragment.app.Fragment
6 |
7 | class MainActivity : AppCompatActivity() {
8 | override fun onCreate(savedInstanceState: Bundle?) {
9 | super.onCreate(savedInstanceState)
10 | setContentView(R.layout.activity_main)
11 |
12 | if (savedInstanceState == null) {
13 | supportFragmentManager.beginTransaction()
14 | .replace(R.id.fragment_container_view, Fragment())
15 | .commit()
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/android/academy/fundamentals/ws4/solution/WS04SolutionFragment.kt:
--------------------------------------------------------------------------------
1 | package com.android.academy.fundamentals.ws4.solution
2 |
3 | import android.os.Bundle
4 | import android.view.View
5 | import android.widget.Button
6 | import androidx.constraintlayout.motion.widget.MotionLayout
7 | import androidx.fragment.app.Fragment
8 | import com.android.academy.fundamentals.R
9 |
10 | class WS04SolutionFragment : Fragment(R.layout.final_fragment_splash) {
11 |
12 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
13 | super.onViewCreated(view, savedInstanceState)
14 |
15 | var isTransitionToEnd = false
16 | val motionLayout = view.findViewById(R.id.motion_layout)
17 | val btnAnimate = view.findViewById