diff --git a/.gitignore b/.gitignore
index b518b3c..2f49c1e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,14 @@
+
+# Created by https://www.gitignore.io/api/androidstudio
+
+### AndroidStudio ###
+# Covers files to be ignored for android development using Android Studio.
+
# Built application files
*.apk
*.ap_
-# Files for the Dalvik VM
+# Files for the ART/Dalvik VM
*.dex
# Java class files
@@ -11,11 +17,16 @@
# Generated files
bin/
gen/
+out/
# Gradle files
+.gradle
.gradle/
build/
+# Signing files
+.signing/
+
# Local configuration file (sdk path, etc)
local.properties
@@ -25,49 +36,101 @@ proguard/
# Log Files
*.log
-# =========================
-# Operating System Files
-# =========================
-
-# OSX
-# =========================
-
+# Android Studio
+/*/build/
+/*/local.properties
+/*/out
+/*/*/build
+/*/*/production
+captures/
+.navigation/
+*.ipr
+*~
+*.swp
+
+# Android Patch
+gen-external-apklibs
+
+# External native build folder generated in Android Studio 2.2 and later
+.externalNativeBuild
+
+# NDK
+obj/
+
+# IntelliJ IDEA
+*.iml
+*.iws
+/out/
+
+# User-specific configurations
+.idea/caches/
+.idea/libraries/
+.idea/shelf/
+.idea/workspace.xml
+.idea/tasks.xml
+.idea/.name
+.idea/compiler.xml
+.idea/copyright/profiles_settings.xml
+.idea/encodings.xml
+.idea/misc.xml
+.idea/modules.xml
+.idea/scopes/scope_settings.xml
+.idea/dictionaries
+.idea/vcs.xml
+.idea/jsLibraryMappings.xml
+.idea/datasources.xml
+.idea/dataSources.ids
+.idea/sqlDataSources.xml
+.idea/dynamic.xml
+.idea/uiDesigner.xml
+.idea/**
+
+# OS-specific files
.DS_Store
-.AppleDouble
-.LSOverride
-
-# Thumbnails
+.DS_Store?
._*
-
-# Files that might appear on external disk
.Spotlight-V100
.Trashes
+ehthumbs.db
+Thumbs.db
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
+# Legacy Eclipse project files
+.classpath
+.project
+.cproject
+.settings/
-# Windows
-# =========================
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
+# Package Files #
+*.war
+*.ear
+
+# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml)
+hs_err_pid*
+
+## Plugin-specific files:
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Mongo Explorer plugin
+.idea/mongoSettings.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+### AndroidStudio Patch ###
-# Folder config file
-Desktop.ini
+!/gradle/wrapper/gradle-wrapper.jar
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-# Windows Installer files
-*.cab
-*.msi
-*.msm
-*.msp
+# End of https://www.gitignore.io/api/androidstudio
-# Windows shortcuts
-*.lnk
diff --git a/eclipse/v1-AospImpl/.classpath b/eclipse/v1-AospImpl/.classpath
deleted file mode 100644
index 5176974..0000000
--- a/eclipse/v1-AospImpl/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- */
- public static final int allowSingleTap=0x7f010005;
- /**
- Indicates whether the drawer should be opened/closed with an animation
- when the user clicks the handle. Default is true.
-
-
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- */
- public static final int animateOnClick=0x7f010006;
- /**
- Indicates whether the drawer can be opened/closed by a single tap
- on the handle. (If false, the user must drag or fling, or click
- using the trackball, to open/close the drawer.) Default is true.
-
-
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp".
-Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
-in (inches), mm (millimeters).
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- */
- public static final int collapsedOffset=0x7f010003;
- /** Identifier for the child that represents the drawer's content.
-
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
- */
- public static final int content=0x7f010001;
- /**
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp".
-Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
-in (inches), mm (millimeters).
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- */
- public static final int expandedOffset=0x7f010004;
- /** Identifier for the child that represents the drawer's handle.
-
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
- */
- public static final int handle=0x7f010000;
- /** Orientation of the SlidingDrawer.
-
Must be one of the following constant values.
-| Constant | Value | Description |
|---|---|---|
topDown | 1 | |
bottomUp | 2 | |
leftToRight | 4 | |
rightToLeft | 8 |
Includes the following attributes:
-| Attribute | Description |
|---|---|
{@link #SlidingDrawer_allowSingleTap me.wtao.widget:allowSingleTap} | |
{@link #SlidingDrawer_animateOnClick me.wtao.widget:animateOnClick} | - Indicates whether the drawer should be opened/closed with an animation - when the user clicks the handle. |
{@link #SlidingDrawer_collapsedOffset me.wtao.widget:collapsedOffset} | - Indicates whether the drawer can be opened/closed by a single tap - on the handle. |
{@link #SlidingDrawer_content me.wtao.widget:content} | Identifier for the child that represents the drawer's content. |
{@link #SlidingDrawer_expandedOffset me.wtao.widget:expandedOffset} | |
{@link #SlidingDrawer_handle me.wtao.widget:handle} | Identifier for the child that represents the drawer's handle. |
{@link #SlidingDrawer_orientation me.wtao.widget:orientation} | Orientation of the SlidingDrawer. |
This symbol is the offset where the {@link me.wtao.widget.R.attr#allowSingleTap} - attribute's value can be found in the {@link #SlidingDrawer} array. - - -
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- @attr name me.wtao.widget:allowSingleTap
- */
- public static final int SlidingDrawer_allowSingleTap = 5;
- /**
-
- @attr description - - Indicates whether the drawer should be opened/closed with an animation - when the user clicks the handle. Default is true. - - - -
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
-
This is a private symbol. - @attr name me.wtao.widget:animateOnClick - */ - public static final int SlidingDrawer_animateOnClick = 6; - /** -
- @attr description - - Indicates whether the drawer can be opened/closed by a single tap - on the handle. (If false, the user must drag or fling, or click - using the trackball, to open/close the drawer.) Default is true. - - - -
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp".
-Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
-in (inches), mm (millimeters).
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
-
This is a private symbol. - @attr name me.wtao.widget:collapsedOffset - */ - public static final int SlidingDrawer_collapsedOffset = 3; - /** -
- @attr description - Identifier for the child that represents the drawer's content. - - -
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
-
This is a private symbol. - @attr name me.wtao.widget:content - */ - public static final int SlidingDrawer_content = 1; - /** -
This symbol is the offset where the {@link me.wtao.widget.R.attr#expandedOffset} - attribute's value can be found in the {@link #SlidingDrawer} array. - - -
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp".
-Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size),
-in (inches), mm (millimeters).
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- @attr name me.wtao.widget:expandedOffset
- */
- public static final int SlidingDrawer_expandedOffset = 4;
- /**
-
- @attr description - Identifier for the child that represents the drawer's handle. - - -
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
-
This is a private symbol. - @attr name me.wtao.widget:handle - */ - public static final int SlidingDrawer_handle = 0; - /** -
- @attr description - Orientation of the SlidingDrawer. - - -
Must be one of the following constant values.
-| Constant | Value | Description |
|---|---|---|
topDown | 1 | |
bottomUp | 2 | |
leftToRight | 4 | |
rightToLeft | 8 |
This is a private symbol.
- @attr name me.wtao.widget:orientation
- */
- public static final int SlidingDrawer_orientation = 2;
- };
-}
diff --git a/eclipse/v1-AospImpl/ic_launcher-web.png b/eclipse/v1-AospImpl/ic_launcher-web.png
deleted file mode 100644
index cfc0eb6..0000000
Binary files a/eclipse/v1-AospImpl/ic_launcher-web.png and /dev/null differ
diff --git a/eclipse/v1-AospImpl/proguard-project.txt b/eclipse/v1-AospImpl/proguard-project.txt
deleted file mode 100644
index f2fe155..0000000
--- a/eclipse/v1-AospImpl/proguard-project.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-# To enable ProGuard in your project, edit project.properties
-# to define the proguard.config property as described in that file.
-#
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in ${sdk.dir}/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the ProGuard
-# include property in project.properties.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
diff --git a/eclipse/v1-AospImpl/project.properties b/eclipse/v1-AospImpl/project.properties
deleted file mode 100644
index 0840b4a..0000000
--- a/eclipse/v1-AospImpl/project.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-15
diff --git a/eclipse/v2-AnimatorImpl/.classpath b/eclipse/v2-AnimatorImpl/.classpath
deleted file mode 100644
index 7bc01d9..0000000
--- a/eclipse/v2-AnimatorImpl/.classpath
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- */
- public static final int allowSingleTap=0x7f010003;
- /**
- Indicates whether the drawer should be opened/closed with an animation
- when the user clicks the handle. Default is true.
-
-
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
- */
- public static final int animateOnClick=0x7f010004;
- /** Identifier for the child that represents the drawer's content.
-
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
- */
- public static final int content=0x7f010001;
- /** Identifier for the child that represents the drawer's handle.
-
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
- */
- public static final int handle=0x7f010000;
- /** Orientation of the SlidingDrawer.
-
Must be one of the following constant values.
-| Constant | Value | Description |
|---|---|---|
topDown | 1 | |
bottomUp | 2 | |
leftToRight | 4 | |
rightToLeft | 8 |
May be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
-
May be a color value, in the form of "#rgb", "#argb",
-"#rrggbb", or "#aarrggbb".
- */
- public static final int tensionTween=0x7f010005;
- }
- public static final class drawable {
- public static final int ic_launcher=0x7f020000;
- }
- public static final class id {
- public static final int bottomUp=0x7f060000;
- public static final int content1=0x7f060004;
- public static final int content2=0x7f060006;
- public static final int content3=0x7f060008;
- public static final int content4=0x7f06000a;
- public static final int handle1=0x7f060005;
- public static final int handle2=0x7f060007;
- public static final int handle3=0x7f060009;
- public static final int handle4=0x7f06000b;
- public static final int leftToRight=0x7f060001;
- public static final int rightToLeft=0x7f060002;
- public static final int topDown=0x7f060003;
- }
- public static final class layout {
- public static final int sliding_drawer_activity_layout=0x7f030000;
- }
- public static final class string {
- public static final int app_name=0x7f040000;
- }
- public static final class style {
- /**
- Base application theme, dependent on API level. This theme is replaced
- by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-
-
- Theme customizations available in newer API levels can go in
- res/values-vXX/styles.xml, while customizations related to
- backward-compatibility can go here.
-
-
- Base application theme for API 11+. This theme completely replaces
- AppBaseTheme from res/values/styles.xml on API 11+ devices.
-
- API 11 theme customizations can go here.
-
- Base application theme for API 14+. This theme completely replaces
- AppBaseTheme from BOTH res/values/styles.xml and
- res/values-v11/styles.xml on API 14+ devices.
-
- API 14 theme customizations can go here.
- */
- public static final int AppBaseTheme=0x7f050000;
- /** Application theme.
- All customizations that are NOT specific to a particular API-level can go here.
- */
- public static final int AppTheme=0x7f050001;
- }
- public static final class styleable {
- /**
- SlidingDrawer specific attributes. These attributes are used to configure
- a SlidingDrawer from XML.
-
-
Includes the following attributes:
-| Attribute | Description |
|---|---|
{@link #SlidingDrawer_allowSingleTap android.support.widget:allowSingleTap} | - Indicates whether the drawer can be opened/closed by a single tap - on the handle. |
{@link #SlidingDrawer_animateOnClick android.support.widget:animateOnClick} | - Indicates whether the drawer should be opened/closed with an animation - when the user clicks the handle. |
{@link #SlidingDrawer_content android.support.widget:content} | Identifier for the child that represents the drawer's content. |
{@link #SlidingDrawer_handle android.support.widget:handle} | Identifier for the child that represents the drawer's handle. |
{@link #SlidingDrawer_orientation android.support.widget:orientation} | Orientation of the SlidingDrawer. |
{@link #SlidingDrawer_tensionTween android.support.widget:tensionTween} |
- @attr description - - Indicates whether the drawer can be opened/closed by a single tap - on the handle. (If false, the user must drag or fling, or click - using the trackball, to open/close the drawer.) Default is true. - - - - -
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
-
This is a private symbol. - @attr name android.support.widget:allowSingleTap - */ - public static final int SlidingDrawer_allowSingleTap = 3; - /** -
- @attr description - - Indicates whether the drawer should be opened/closed with an animation - when the user clicks the handle. Default is true. - - - -
Must be a boolean value, either "true" or "false".
-
This may also be a reference to a resource (in the form
-"@[package:]type:name") or
-theme attribute (in the form
-"?[package:][type:]name")
-containing a value of this type.
-
This is a private symbol. - @attr name android.support.widget:animateOnClick - */ - public static final int SlidingDrawer_animateOnClick = 4; - /** -
- @attr description - Identifier for the child that represents the drawer's content. - - -
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
-
This is a private symbol. - @attr name android.support.widget:content - */ - public static final int SlidingDrawer_content = 1; - /** -
- @attr description - Identifier for the child that represents the drawer's handle. - - -
Must be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
-
This is a private symbol. - @attr name android.support.widget:handle - */ - public static final int SlidingDrawer_handle = 0; - /** -
- @attr description - Orientation of the SlidingDrawer. - - -
Must be one of the following constant values.
-| Constant | Value | Description |
|---|---|---|
topDown | 1 | |
bottomUp | 2 | |
leftToRight | 4 | |
rightToLeft | 8 |
This is a private symbol. - @attr name android.support.widget:orientation - */ - public static final int SlidingDrawer_orientation = 2; - /** -
This symbol is the offset where the {@link android.support.widget.R.attr#tensionTween} - attribute's value can be found in the {@link #SlidingDrawer} array. - - -
May be a reference to another resource, in the form "@[+][package:]type:name"
-or to a theme attribute in the form "?[package:][type:]name".
-
May be a color value, in the form of "#rgb", "#argb",
-"#rrggbb", or "#aarrggbb".
- @attr name android.support.widget:tensionTween
- */
- public static final int SlidingDrawer_tensionTween = 5;
- };
-}
diff --git a/eclipse/v2-AnimatorImpl/libs/android-support-v4.jar b/eclipse/v2-AnimatorImpl/libs/android-support-v4.jar
deleted file mode 100644
index bd450c7..0000000
Binary files a/eclipse/v2-AnimatorImpl/libs/android-support-v4.jar and /dev/null differ
diff --git a/eclipse/v2-AnimatorImpl/proguard-project.txt b/eclipse/v2-AnimatorImpl/proguard-project.txt
deleted file mode 100644
index f2fe155..0000000
--- a/eclipse/v2-AnimatorImpl/proguard-project.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-# To enable ProGuard in your project, edit project.properties
-# to define the proguard.config property as described in that file.
-#
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in ${sdk.dir}/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the ProGuard
-# include property in project.properties.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
diff --git a/eclipse/v2-AnimatorImpl/project.properties b/eclipse/v2-AnimatorImpl/project.properties
deleted file mode 100644
index 4ab1256..0000000
--- a/eclipse/v2-AnimatorImpl/project.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-19
diff --git a/v1-AospImpl/app/build.gradle b/v1-AospImpl/app/build.gradle
new file mode 100644
index 0000000..1d08f22
--- /dev/null
+++ b/v1-AospImpl/app/build.gradle
@@ -0,0 +1,19 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 15
+ buildToolsVersion "27.0.3"
+
+ defaultConfig {
+ applicationId "me.wtao.widget"
+ minSdkVersion 10
+ targetSdkVersion 17
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+ }
+ }
+}
diff --git a/eclipse/v1-AospImpl/AndroidManifest.xml b/v1-AospImpl/app/src/main/AndroidManifest.xml
similarity index 100%
rename from eclipse/v1-AospImpl/AndroidManifest.xml
rename to v1-AospImpl/app/src/main/AndroidManifest.xml
diff --git a/eclipse/v1-AospImpl/src/me/wtao/utils/Logcat.java b/v1-AospImpl/app/src/main/java/me/wtao/utils/Logcat.java
similarity index 100%
rename from eclipse/v1-AospImpl/src/me/wtao/utils/Logcat.java
rename to v1-AospImpl/app/src/main/java/me/wtao/utils/Logcat.java
diff --git a/eclipse/v1-AospImpl/src/me/wtao/widget/DemoActivity.java b/v1-AospImpl/app/src/main/java/me/wtao/widget/DemoActivity.java
similarity index 100%
rename from eclipse/v1-AospImpl/src/me/wtao/widget/DemoActivity.java
rename to v1-AospImpl/app/src/main/java/me/wtao/widget/DemoActivity.java
diff --git a/eclipse/v1-AospImpl/src/me/wtao/widget/SlidingDrawer.java b/v1-AospImpl/app/src/main/java/me/wtao/widget/SlidingDrawer.java
similarity index 100%
rename from eclipse/v1-AospImpl/src/me/wtao/widget/SlidingDrawer.java
rename to v1-AospImpl/app/src/main/java/me/wtao/widget/SlidingDrawer.java
diff --git a/eclipse/v1-AospImpl/res/drawable-hdpi/ic_launcher.png b/v1-AospImpl/app/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from eclipse/v1-AospImpl/res/drawable-hdpi/ic_launcher.png
rename to v1-AospImpl/app/src/main/res/drawable-hdpi/ic_launcher.png
diff --git a/eclipse/v1-AospImpl/res/drawable-mdpi/ic_launcher.png b/v1-AospImpl/app/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from eclipse/v1-AospImpl/res/drawable-mdpi/ic_launcher.png
rename to v1-AospImpl/app/src/main/res/drawable-mdpi/ic_launcher.png
diff --git a/eclipse/v1-AospImpl/res/drawable-xhdpi/ic_launcher.png b/v1-AospImpl/app/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from eclipse/v1-AospImpl/res/drawable-xhdpi/ic_launcher.png
rename to v1-AospImpl/app/src/main/res/drawable-xhdpi/ic_launcher.png
diff --git a/eclipse/v1-AospImpl/res/drawable-xxhdpi/ic_launcher.png b/v1-AospImpl/app/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from eclipse/v1-AospImpl/res/drawable-xxhdpi/ic_launcher.png
rename to v1-AospImpl/app/src/main/res/drawable-xxhdpi/ic_launcher.png
diff --git a/eclipse/v1-AospImpl/res/drawable/bk_holo_blue_light.xml b/v1-AospImpl/app/src/main/res/drawable/bk_holo_blue_light.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/drawable/bk_holo_blue_light.xml
rename to v1-AospImpl/app/src/main/res/drawable/bk_holo_blue_light.xml
diff --git a/eclipse/v1-AospImpl/res/drawable/bk_holo_red_light.xml b/v1-AospImpl/app/src/main/res/drawable/bk_holo_red_light.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/drawable/bk_holo_red_light.xml
rename to v1-AospImpl/app/src/main/res/drawable/bk_holo_red_light.xml
diff --git a/eclipse/v1-AospImpl/res/layout/activity_demo_1.xml b/v1-AospImpl/app/src/main/res/layout/activity_demo_1.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/layout/activity_demo_1.xml
rename to v1-AospImpl/app/src/main/res/layout/activity_demo_1.xml
diff --git a/eclipse/v1-AospImpl/res/layout/activity_demo_2.xml b/v1-AospImpl/app/src/main/res/layout/activity_demo_2.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/layout/activity_demo_2.xml
rename to v1-AospImpl/app/src/main/res/layout/activity_demo_2.xml
diff --git a/eclipse/v1-AospImpl/res/layout/layout_sliding_drawer.xml b/v1-AospImpl/app/src/main/res/layout/layout_sliding_drawer.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/layout/layout_sliding_drawer.xml
rename to v1-AospImpl/app/src/main/res/layout/layout_sliding_drawer.xml
diff --git a/eclipse/v1-AospImpl/res/menu/demo.xml b/v1-AospImpl/app/src/main/res/menu/demo.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/menu/demo.xml
rename to v1-AospImpl/app/src/main/res/menu/demo.xml
diff --git a/eclipse/v1-AospImpl/res/values-sw600dp/dimens.xml b/v1-AospImpl/app/src/main/res/values-sw600dp/dimens.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values-sw600dp/dimens.xml
rename to v1-AospImpl/app/src/main/res/values-sw600dp/dimens.xml
diff --git a/eclipse/v1-AospImpl/res/values-sw720dp-land/dimens.xml b/v1-AospImpl/app/src/main/res/values-sw720dp-land/dimens.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values-sw720dp-land/dimens.xml
rename to v1-AospImpl/app/src/main/res/values-sw720dp-land/dimens.xml
diff --git a/eclipse/v1-AospImpl/res/values-v11/styles.xml b/v1-AospImpl/app/src/main/res/values-v11/styles.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values-v11/styles.xml
rename to v1-AospImpl/app/src/main/res/values-v11/styles.xml
diff --git a/eclipse/v1-AospImpl/res/values-v14/styles.xml b/v1-AospImpl/app/src/main/res/values-v14/styles.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values-v14/styles.xml
rename to v1-AospImpl/app/src/main/res/values-v14/styles.xml
diff --git a/eclipse/v1-AospImpl/res/values/attrs.xml b/v1-AospImpl/app/src/main/res/values/attrs.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values/attrs.xml
rename to v1-AospImpl/app/src/main/res/values/attrs.xml
diff --git a/eclipse/v1-AospImpl/res/values/colors.xml b/v1-AospImpl/app/src/main/res/values/colors.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values/colors.xml
rename to v1-AospImpl/app/src/main/res/values/colors.xml
diff --git a/eclipse/v1-AospImpl/res/values/dimens.xml b/v1-AospImpl/app/src/main/res/values/dimens.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values/dimens.xml
rename to v1-AospImpl/app/src/main/res/values/dimens.xml
diff --git a/eclipse/v1-AospImpl/res/values/strings.xml b/v1-AospImpl/app/src/main/res/values/strings.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values/strings.xml
rename to v1-AospImpl/app/src/main/res/values/strings.xml
diff --git a/eclipse/v1-AospImpl/res/values/styles.xml b/v1-AospImpl/app/src/main/res/values/styles.xml
similarity index 100%
rename from eclipse/v1-AospImpl/res/values/styles.xml
rename to v1-AospImpl/app/src/main/res/values/styles.xml
diff --git a/v1-AospImpl/build.gradle b/v1-AospImpl/build.gradle
new file mode 100644
index 0000000..9b3fa3e
--- /dev/null
+++ b/v1-AospImpl/build.gradle
@@ -0,0 +1,17 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ jcenter()
+ google()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.1.4'
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ google()
+ }
+}
diff --git a/v1-AospImpl/gradle/wrapper/gradle-wrapper.jar b/v1-AospImpl/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..7a3265e
Binary files /dev/null and b/v1-AospImpl/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/v1-AospImpl/gradle/wrapper/gradle-wrapper.properties b/v1-AospImpl/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..efc27cb
--- /dev/null
+++ b/v1-AospImpl/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Jan 13 09:12:34 PST 2018
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip
diff --git a/v1-AospImpl/gradlew b/v1-AospImpl/gradlew
new file mode 100755
index 0000000..cccdd3d
--- /dev/null
+++ b/v1-AospImpl/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/v1-AospImpl/gradlew.bat b/v1-AospImpl/gradlew.bat
new file mode 100644
index 0000000..f955316
--- /dev/null
+++ b/v1-AospImpl/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/v1-AospImpl/import-summary.txt b/v1-AospImpl/import-summary.txt
new file mode 100644
index 0000000..a3321a0
--- /dev/null
+++ b/v1-AospImpl/import-summary.txt
@@ -0,0 +1,35 @@
+ECLIPSE ANDROID PROJECT IMPORT SUMMARY
+======================================
+
+Ignored Files:
+--------------
+The following files were *not* copied into the new Gradle project; you
+should evaluate whether these are still needed in your project and if
+so manually move them:
+
+* ic_launcher-web.png
+* proguard-project.txt
+
+Moved Files:
+------------
+Android Gradle projects use a different directory structure than ADT
+Eclipse projects. Here's how the projects were restructured:
+
+* AndroidManifest.xml => app/src/main/AndroidManifest.xml
+* res/ => app/src/main/res/
+* src/ => app/src/main/java/
+
+Next Steps:
+-----------
+You can now build the project. The Gradle project needs network
+connectivity to download dependencies.
+
+Bugs:
+-----
+If for some reason your project does not build, and you determine that
+it is due to a bug or limitation of the Eclipse to Gradle importer,
+please file a bug at http://b.android.com with category
+Component-Tools.
+
+(This import summary is for your information only, and can be deleted
+after import once you are satisfied with the results.)
diff --git a/v1-AospImpl/settings.gradle b/v1-AospImpl/settings.gradle
new file mode 100644
index 0000000..e7b4def
--- /dev/null
+++ b/v1-AospImpl/settings.gradle
@@ -0,0 +1 @@
+include ':app'
diff --git a/v2-AnimatorImpl/app/build.gradle b/v2-AnimatorImpl/app/build.gradle
new file mode 100644
index 0000000..65b5bd6
--- /dev/null
+++ b/v2-AnimatorImpl/app/build.gradle
@@ -0,0 +1,25 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 19
+ buildToolsVersion "27.0.3"
+
+ defaultConfig {
+ applicationId "android.support.widget"
+ minSdkVersion 14
+ targetSdkVersion 20
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+ }
+ }
+}
+
+dependencies {
+ compile 'com.android.support:support-v4:19.1.0'
+ compile files('libs/framework.jar')
+ compile files('libs/nineoldandroids.jar')
+}
diff --git a/eclipse/v2-AnimatorImpl/libs/framework.jar b/v2-AnimatorImpl/app/libs/framework.jar
similarity index 100%
rename from eclipse/v2-AnimatorImpl/libs/framework.jar
rename to v2-AnimatorImpl/app/libs/framework.jar
diff --git a/eclipse/v2-AnimatorImpl/libs/nineoldandroids.jar b/v2-AnimatorImpl/app/libs/nineoldandroids.jar
similarity index 100%
rename from eclipse/v2-AnimatorImpl/libs/nineoldandroids.jar
rename to v2-AnimatorImpl/app/libs/nineoldandroids.jar
diff --git a/eclipse/v2-AnimatorImpl/AndroidManifest.xml b/v2-AnimatorImpl/app/src/main/AndroidManifest.xml
similarity index 100%
rename from eclipse/v2-AnimatorImpl/AndroidManifest.xml
rename to v2-AnimatorImpl/app/src/main/AndroidManifest.xml
diff --git a/eclipse/v2-AnimatorImpl/src/android/demo/SlidingDrawerActivity.java b/v2-AnimatorImpl/app/src/main/java/android/demo/SlidingDrawerActivity.java
similarity index 100%
rename from eclipse/v2-AnimatorImpl/src/android/demo/SlidingDrawerActivity.java
rename to v2-AnimatorImpl/app/src/main/java/android/demo/SlidingDrawerActivity.java
diff --git a/eclipse/v2-AnimatorImpl/src/android/support/widget/SlidingDrawer.java b/v2-AnimatorImpl/app/src/main/java/android/support/widget/SlidingDrawer.java
similarity index 100%
rename from eclipse/v2-AnimatorImpl/src/android/support/widget/SlidingDrawer.java
rename to v2-AnimatorImpl/app/src/main/java/android/support/widget/SlidingDrawer.java
diff --git a/eclipse/v2-AnimatorImpl/res/drawable-hdpi/ic_launcher.png b/v2-AnimatorImpl/app/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/drawable-hdpi/ic_launcher.png
rename to v2-AnimatorImpl/app/src/main/res/drawable-hdpi/ic_launcher.png
diff --git a/eclipse/v2-AnimatorImpl/res/drawable-mdpi/ic_launcher.png b/v2-AnimatorImpl/app/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/drawable-mdpi/ic_launcher.png
rename to v2-AnimatorImpl/app/src/main/res/drawable-mdpi/ic_launcher.png
diff --git a/eclipse/v2-AnimatorImpl/res/drawable-xhdpi/ic_launcher.png b/v2-AnimatorImpl/app/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/drawable-xhdpi/ic_launcher.png
rename to v2-AnimatorImpl/app/src/main/res/drawable-xhdpi/ic_launcher.png
diff --git a/eclipse/v2-AnimatorImpl/res/layout/sliding_drawer_activity_layout.xml b/v2-AnimatorImpl/app/src/main/res/layout/sliding_drawer_activity_layout.xml
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/layout/sliding_drawer_activity_layout.xml
rename to v2-AnimatorImpl/app/src/main/res/layout/sliding_drawer_activity_layout.xml
diff --git a/eclipse/v2-AnimatorImpl/res/values-v11/styles.xml b/v2-AnimatorImpl/app/src/main/res/values-v11/styles.xml
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/values-v11/styles.xml
rename to v2-AnimatorImpl/app/src/main/res/values-v11/styles.xml
diff --git a/eclipse/v2-AnimatorImpl/res/values-v14/styles.xml b/v2-AnimatorImpl/app/src/main/res/values-v14/styles.xml
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/values-v14/styles.xml
rename to v2-AnimatorImpl/app/src/main/res/values-v14/styles.xml
diff --git a/eclipse/v2-AnimatorImpl/res/values/attrs_SlidingDrawer.xml b/v2-AnimatorImpl/app/src/main/res/values/attrs_SlidingDrawer.xml
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/values/attrs_SlidingDrawer.xml
rename to v2-AnimatorImpl/app/src/main/res/values/attrs_SlidingDrawer.xml
diff --git a/eclipse/v2-AnimatorImpl/res/values/strings.xml b/v2-AnimatorImpl/app/src/main/res/values/strings.xml
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/values/strings.xml
rename to v2-AnimatorImpl/app/src/main/res/values/strings.xml
diff --git a/eclipse/v2-AnimatorImpl/res/values/styles.xml b/v2-AnimatorImpl/app/src/main/res/values/styles.xml
similarity index 100%
rename from eclipse/v2-AnimatorImpl/res/values/styles.xml
rename to v2-AnimatorImpl/app/src/main/res/values/styles.xml
diff --git a/v2-AnimatorImpl/build.gradle b/v2-AnimatorImpl/build.gradle
new file mode 100644
index 0000000..9b3fa3e
--- /dev/null
+++ b/v2-AnimatorImpl/build.gradle
@@ -0,0 +1,17 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ jcenter()
+ google()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.1.4'
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ google()
+ }
+}
diff --git a/v2-AnimatorImpl/gradle/wrapper/gradle-wrapper.jar b/v2-AnimatorImpl/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..7a3265e
Binary files /dev/null and b/v2-AnimatorImpl/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/v2-AnimatorImpl/gradle/wrapper/gradle-wrapper.properties b/v2-AnimatorImpl/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..efc27cb
--- /dev/null
+++ b/v2-AnimatorImpl/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Jan 13 09:12:34 PST 2018
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip
diff --git a/v2-AnimatorImpl/gradlew b/v2-AnimatorImpl/gradlew
new file mode 100755
index 0000000..cccdd3d
--- /dev/null
+++ b/v2-AnimatorImpl/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/v2-AnimatorImpl/gradlew.bat b/v2-AnimatorImpl/gradlew.bat
new file mode 100644
index 0000000..f955316
--- /dev/null
+++ b/v2-AnimatorImpl/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/v2-AnimatorImpl/import-summary.txt b/v2-AnimatorImpl/import-summary.txt
new file mode 100644
index 0000000..0f4713a
--- /dev/null
+++ b/v2-AnimatorImpl/import-summary.txt
@@ -0,0 +1,48 @@
+ECLIPSE ANDROID PROJECT IMPORT SUMMARY
+======================================
+
+Ignored Files:
+--------------
+The following files were *not* copied into the new Gradle project; you
+should evaluate whether these are still needed in your project and if
+so manually move them:
+
+* proguard-project.txt
+
+Replaced Jars with Dependencies:
+--------------------------------
+The importer recognized the following .jar files as third party
+libraries and replaced them with Gradle dependencies instead. This has
+the advantage that more explicit version information is known, and the
+libraries can be updated automatically. However, it is possible that
+the .jar file in your project was of an older version than the
+dependency we picked, which could render the project not compileable.
+You can disable the jar replacement in the import wizard and try again:
+
+android-support-v4.jar => com.android.support:support-v4:19.1.0
+
+Moved Files:
+------------
+Android Gradle projects use a different directory structure than ADT
+Eclipse projects. Here's how the projects were restructured:
+
+* AndroidManifest.xml => app/src/main/AndroidManifest.xml
+* libs/framework.jar => app/libs/framework.jar
+* libs/nineoldandroids.jar => app/libs/nineoldandroids.jar
+* res/ => app/src/main/res/
+* src/ => app/src/main/java/
+
+Next Steps:
+-----------
+You can now build the project. The Gradle project needs network
+connectivity to download dependencies.
+
+Bugs:
+-----
+If for some reason your project does not build, and you determine that
+it is due to a bug or limitation of the Eclipse to Gradle importer,
+please file a bug at http://b.android.com with category
+Component-Tools.
+
+(This import summary is for your information only, and can be deleted
+after import once you are satisfied with the results.)
diff --git a/v2-AnimatorImpl/settings.gradle b/v2-AnimatorImpl/settings.gradle
new file mode 100644
index 0000000..e7b4def
--- /dev/null
+++ b/v2-AnimatorImpl/settings.gradle
@@ -0,0 +1 @@
+include ':app'