├── settings.gradle ├── Library ├── libs │ └── android-support-v4.jar ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ ├── res │ │ └── values │ │ │ └── slidinglayer-attrs.xml │ │ └── java │ │ └── com │ │ └── wunderlist │ │ └── slidinglayer │ │ ├── transformer │ │ ├── AlphaTransformer.java │ │ ├── RotationTransformer.java │ │ └── SlideJoyTransformer.java │ │ ├── utils │ │ └── Transitions.java │ │ ├── LayerTransformer.java │ │ └── SlidingLayer.java ├── gradle.properties ├── build.gradle └── pom.xml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── SlidingLayerSample ├── ic_launcher-web.png ├── art │ ├── device-2015-09-13-131637.png │ ├── device-2015-09-13-131714.png │ ├── device-2015-09-13-131735.png │ ├── device-2015-09-13-131825.png │ ├── device-2015-09-13-131907.png │ └── device-2015-09-13-131931.png ├── src │ └── main │ │ ├── res │ │ ├── drawable-hdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-ldpi │ │ │ └── ic_launcher.png │ │ ├── drawable-mdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── button_red.9.png │ │ │ ├── container_rocket.png │ │ │ ├── main_screen_rocket.png │ │ │ ├── button_red_pressed.9.png │ │ │ ├── container_rocket_left.png │ │ │ └── container_rocket_right.png │ │ ├── layout │ │ │ ├── toolbar.xml │ │ │ ├── activity_settings.xml │ │ │ └── activity_main.xml │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── dimensions.xml │ │ │ ├── styles.xml │ │ │ └── strings.xml │ │ ├── drawable │ │ │ ├── sidebar_shadow.xml │ │ │ └── button_red_selector.xml │ │ └── xml │ │ │ └── pref_general_activity.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── slidinglayersample │ │ ├── InitSelectionActivity.java │ │ └── MainActivity.java ├── build.gradle └── pom.xml ├── .gitignore ├── gradlew.bat ├── README.md ├── gradlew ├── pom.xml └── LICENSE.txt /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':Library', ':SlidingLayerSample' -------------------------------------------------------------------------------- /Library/libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/Library/libs/android-support-v4.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /SlidingLayerSample/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/ic_launcher-web.png -------------------------------------------------------------------------------- /SlidingLayerSample/art/device-2015-09-13-131637.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/art/device-2015-09-13-131637.png -------------------------------------------------------------------------------- /SlidingLayerSample/art/device-2015-09-13-131714.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/art/device-2015-09-13-131714.png -------------------------------------------------------------------------------- /SlidingLayerSample/art/device-2015-09-13-131735.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/art/device-2015-09-13-131735.png -------------------------------------------------------------------------------- /SlidingLayerSample/art/device-2015-09-13-131825.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/art/device-2015-09-13-131825.png -------------------------------------------------------------------------------- /SlidingLayerSample/art/device-2015-09-13-131907.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/art/device-2015-09-13-131907.png -------------------------------------------------------------------------------- /SlidingLayerSample/art/device-2015-09-13-131931.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/art/device-2015-09-13-131931.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-xhdpi/button_red.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-xhdpi/button_red.9.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-xhdpi/container_rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-xhdpi/container_rocket.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-xhdpi/main_screen_rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-xhdpi/main_screen_rocket.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-xhdpi/button_red_pressed.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-xhdpi/button_red_pressed.9.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-xhdpi/container_rocket_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-xhdpi/container_rocket_left.png -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable-xhdpi/container_rocket_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftarchive/android-sliding-layer-lib/HEAD/SlidingLayerSample/src/main/res/drawable-xhdpi/container_rocket_right.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Aug 12 11:01:33 CEST 2015 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.6-all.zip 7 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/layout/toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #009688 4 | #00796B 5 | #B2DFDB 6 | #FF5252 7 | #212121 8 | #727272 9 | #FFFFFF 10 | #B6B6B6 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/ 13 | gen/ 14 | target/ 15 | 16 | # Local configuration file (sdk path, etc) 17 | local.properties 18 | 19 | # Eclipse project files 20 | .classpath 21 | .project 22 | # IntelliJ project files 23 | *.iml 24 | *.ipr 25 | *.iws 26 | .idea/ 27 | 28 | # Package Files # 29 | *.war 30 | *.ear 31 | *.apk 32 | bin/ 33 | bin 34 | gen/ 35 | gen 36 | .metadata/ 37 | .metadata 38 | 39 | # Gradle files 40 | .gradle/ 41 | build/ -------------------------------------------------------------------------------- /SlidingLayerSample/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileOptions { 5 | sourceCompatibility JavaVersion.VERSION_1_7 6 | targetCompatibility JavaVersion.VERSION_1_7 7 | } 8 | compileSdkVersion 23 9 | buildToolsVersion "23.0.1" 10 | defaultConfig { 11 | minSdkVersion 8 12 | targetSdkVersion 23 13 | versionCode 3 14 | versionName "2.0.0" 15 | } 16 | } 17 | 18 | dependencies { 19 | compile project(':Library') 20 | compile 'com.android.support:appcompat-v7:23.0.1' 21 | } 22 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /Library/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Library/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=wunderlist-sliding-layer 2 | POM_ARTIFACT_ID=sliding-layer 3 | POM_PACKAGING=aar 4 | 5 | VERSION_NAME=1.2.5 6 | VERSION_CODE=1 7 | GROUP=com.wunderlist 8 | 9 | POM_DESCRIPTION=A fully customizable layer that shows your content in another layer. This layer can be opened \ 10 | swiping from left/right/top/bottom and dismissed swiping too to the other direction. 11 | POM_URL=https://github.com/wunderlist/android-sliding-layer-lib 12 | POM_SCM_URL=https://github.com/wunderlist/android-sliding-layer-lib 13 | POM_SCM_CONNECTION=scm:git@github.com:wunderlist/android-sliding-layer-lib.git 14 | POM_SCM_DEV_CONNECTION=scm:git@github.com:wunderlist/android-sliding-layer-lib.git 15 | POM_LICENCE_NAME=The Apache Software License, Version 2.0 16 | POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt 17 | POM_LICENCE_DIST=repo 18 | POM_DEVELOPER_ID=6Wunderkinder Gmbh 19 | POM_DEVELOPER_NAME=6Wunderkinder Gmbh -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable/sidebar_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 24 | 25 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/values/dimensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 24 | 25 | 26 | 8dp 27 | 300dp 28 | 150dp 29 | 48dp 30 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/drawable/button_red_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Library/src/main/res/values/slidinglayer-attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 22 | 23 | 25 | 26 | 31 | 32 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Library/src/main/java/com/wunderlist/slidinglayer/transformer/AlphaTransformer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SlidingLayer.java 3 | * 4 | * Copyright (C) 2015 6 Wunderkinder GmbH. 5 | * 6 | * @author Jose L Ugia - @Jl_Ugia 7 | * @author Antonio Consuegra - @aconsuegra 8 | * @author Cesar Valiente - @CesarValiente 9 | * @version 1.2.0 10 | * 11 | * Licensed under the Apache License, Version 2.0 (the "License"); 12 | * you may not use this file except in compliance with the License. 13 | * You may obtain a copy of the License at 14 | * 15 | * http://www.apache.org/licenses/LICENSE-2.0 16 | * 17 | * Unless required by applicable law or agreed to in writing, software 18 | * distributed under the License is distributed on an "AS IS" BASIS, 19 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | * See the License for the specific language governing permissions and 21 | * limitations under the License. 22 | */ 23 | 24 | package com.wunderlist.slidinglayer.transformer; 25 | 26 | import android.view.View; 27 | 28 | import com.wunderlist.slidinglayer.LayerTransformer; 29 | 30 | /** 31 | * Created by joseluisugia on 16/03/15. 32 | */ 33 | public final class AlphaTransformer extends LayerTransformer { 34 | 35 | private static final int DEFAULT_MULTIPLIER = 1; 36 | 37 | private final float mMultiplier; 38 | 39 | public AlphaTransformer() { 40 | this(DEFAULT_MULTIPLIER); 41 | } 42 | 43 | public AlphaTransformer(float multiplier) { 44 | mMultiplier = multiplier; 45 | } 46 | 47 | @Override 48 | public void transform(View layerView, float previewProgress, float layerProgress) { 49 | 50 | final float progressRatioToAnimate = Math.max(previewProgress, layerProgress); 51 | final float alpha = Math.max(0, Math.min(1, progressRatioToAnimate * mMultiplier)); 52 | layerView.setAlpha(alpha); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Library/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | mavenCentral() 5 | } 6 | dependencies { 7 | classpath 'com.android.tools.build:gradle:2.1.0' 8 | classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' 9 | classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' 10 | } 11 | } 12 | 13 | apply plugin: 'com.android.library' 14 | apply plugin: 'com.github.dcendents.android-maven' 15 | 16 | dependencies { 17 | compile 'com.android.support:support-v4:23.0.1' 18 | } 19 | 20 | ext { 21 | bintrayRepo = 'maven' 22 | bintrayName = 'wunderlist-sliding-layer' 23 | 24 | publishedGroupId = 'com.wunderlist' 25 | libraryName = 'wunderlist-sliding-layer' 26 | artifact = 'sliding-layer' 27 | 28 | libraryDescription = 'A fully customizable layer that shows your content in another layer. This layer can be ' + 29 | 'opened swiping from left/right/top/bottom and dismissed swiping too to the other direction.' 30 | 31 | siteUrl = 'https://github.com/wunderlist/android-sliding-layer-lib' 32 | gitUrl = 'https://github.com/wunderlist/android-sliding-layer-lib.git' 33 | 34 | libraryVersion = '1.2.5' 35 | 36 | developerId = '6Wunderkinder Gmbh' 37 | developerName = '6Wunderkinder Gmbh' 38 | developerEmail = 'android@6wunderkinder.com' 39 | 40 | licenseName = 'The Apache Software License, Version 2.0' 41 | licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' 42 | allLicenses = ["Apache-2.0"] 43 | } 44 | 45 | android { 46 | compileSdkVersion 23 47 | buildToolsVersion "23.0.1" 48 | 49 | defaultConfig { 50 | minSdkVersion 8 51 | targetSdkVersion 23 52 | versionCode 2 53 | versionName "1.2.5" 54 | } 55 | 56 | lintOptions { 57 | abortOnError false 58 | } 59 | } 60 | 61 | apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle' 62 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle' 63 | apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle' 64 | 65 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/xml/pref_general_activity.xml: -------------------------------------------------------------------------------- 1 | 21 | 22 | 23 | 24 | 31 | 32 | 39 | 40 | 44 | 45 | 49 | 50 | 54 | 55 | 58 | 59 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 25 | 26 | 27 | 28 | 32 | 39 | 40 | 41 | 47 | 48 | 57 | 58 | -------------------------------------------------------------------------------- /SlidingLayerSample/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 4.0.0 23 | 24 | SlidingLayerSample 25 | SlidingLayer (Sample) 26 | apk 27 | 28 | 29 | com.slidinglayer 30 | parent 31 | 1.0 32 | ../pom.xml 33 | 34 | 35 | 36 | 37 | android 38 | android 39 | ${android.version} 40 | provided 41 | 42 | 43 | android.support 44 | compatibility-v4 45 | ${android-support.version} 46 | compile 47 | 48 | 49 | com.slidinglayer 50 | Library 51 | ${project.version} 52 | apklib 53 | compile 54 | 55 | 56 | 57 | 58 | src 59 | 60 | 61 | 62 | com.jayway.maven.plugins.android.generation2 63 | android-maven-plugin 64 | true 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /Library/src/main/java/com/wunderlist/slidinglayer/utils/Transitions.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SlidingLayer.java 3 | * 4 | * Copyright (C) 2015 6 Wunderkinder GmbH. 5 | * 6 | * @author Jose L Ugia - @Jl_Ugia 7 | * @author Antonio Consuegra - @aconsuegra 8 | * @author Cesar Valiente - @CesarValiente 9 | * @version 1.2.0 10 | * 11 | * Licensed under the Apache License, Version 2.0 (the "License"); 12 | * you may not use this file except in compliance with the License. 13 | * You may obtain a copy of the License at 14 | * 15 | * http://www.apache.org/licenses/LICENSE-2.0 16 | * 17 | * Unless required by applicable law or agreed to in writing, software 18 | * distributed under the License is distributed on an "AS IS" BASIS, 19 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | * See the License for the specific language governing permissions and 21 | * limitations under the License. 22 | */ 23 | 24 | package com.wunderlist.slidinglayer.utils; 25 | 26 | /** 27 | * Created by joseluisugia on 17/03/15. 28 | */ 29 | public class Transitions { 30 | 31 | 32 | public static float intermediateValueForRange(float position, float[] values) { 33 | return intermediateValueForRange(position, new float[] { 0, 1 }, values); 34 | } 35 | 36 | public static float intermediateValueForCuePoints(float position, float[] range) { 37 | return intermediateValueForRange(position, range, range); 38 | } 39 | 40 | public static float intermediateValueForRange(float position, float[] cuePoints, float[] values) { 41 | 42 | if (cuePoints.length != values.length) { 43 | throw new IllegalArgumentException("Range and values arrays must be of the same size"); 44 | } 45 | 46 | int length = cuePoints.length; 47 | 48 | if (position <= cuePoints[0]) { 49 | return values[0]; 50 | } else { 51 | 52 | float cuePoint, previousCuePoint, value, previousValue; 53 | float rangeRatio; 54 | 55 | for (int i = 1; i < length; i++) { 56 | 57 | cuePoint = cuePoints[i]; 58 | 59 | if (position <= cuePoint) { 60 | previousCuePoint = cuePoints[i - 1]; 61 | value = values[i]; 62 | previousValue = values[i - 1]; 63 | rangeRatio = (position - previousCuePoint) / (cuePoint - previousCuePoint); 64 | return previousValue + ((value - previousValue) * rangeRatio); 65 | } 66 | } 67 | 68 | return values[length - 1]; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Library/src/main/java/com/wunderlist/slidinglayer/LayerTransformer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SlidingLayer.java 3 | * 4 | * Copyright (C) 2015 6 Wunderkinder GmbH. 5 | * 6 | * @author Jose L Ugia - @Jl_Ugia 7 | * @author Antonio Consuegra - @aconsuegra 8 | * @author Cesar Valiente - @CesarValiente 9 | * @version 1.2.0 10 | * 11 | * Licensed under the Apache License, Version 2.0 (the "License"); 12 | * you may not use this file except in compliance with the License. 13 | * You may obtain a copy of the License at 14 | * 15 | * http://www.apache.org/licenses/LICENSE-2.0 16 | * 17 | * Unless required by applicable law or agreed to in writing, software 18 | * distributed under the License is distributed on an "AS IS" BASIS, 19 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | * See the License for the specific language governing permissions and 21 | * limitations under the License. 22 | */ 23 | 24 | package com.wunderlist.slidinglayer; 25 | 26 | import android.view.View; 27 | 28 | /** 29 | * Created by joseluisugia on 16/03/15. 30 | */ 31 | public abstract class LayerTransformer { 32 | 33 | /** 34 | * This method is executed when the layer finish measurement. Use this method to set member values inside of 35 | * the transformer so that they do not need to be calculated on every iteration of the animation; 36 | * 37 | * @param layerView A reference to the layer itself. 38 | * @param screenSide Side of the screen where the layer is stuck to 39 | */ 40 | protected void onMeasure(View layerView, int screenSide) { 41 | } 42 | 43 | /** 44 | * Internal method to expose necessary properties for internal transformers to operate. Note that custom 45 | * transformers will modify views based on their circumstances. For example, 46 | * a default transformer if the view is stuck to the top or bottom, or if the preview is enabled, 47 | * whereas a custom implementation has that information already. 48 | * 49 | * @param layerView A reference to the layer itself. 50 | * @param previewProgress The progress of the layer relative to the preview mode [0 - 1]. 0 fixed if no preview 51 | * @param layerProgress The progress of the layer relative to its total size [0 - 1] 52 | * @param screenSide Side of the screen where the layer is stuck to 53 | */ 54 | protected void internalTransform(View layerView, float previewProgress, float layerProgress, int screenSide) { 55 | transform(layerView, previewProgress, layerProgress); 56 | } 57 | 58 | /** 59 | * Apply a property transformation to layer based on its scrolling state for the total size of the layer 60 | * and preview mode. 61 | * 62 | * @param layerView A reference to the layer itself. 63 | * @param previewProgress The progress of the layer relative to the preview mode [0 - 1]. 0 fixed if no preview 64 | * @param layerProgress The progress of the layer relative to its total size [0 - 1] 65 | */ 66 | public abstract void transform(View layerView, float previewProgress, float layerProgress); 67 | } 68 | -------------------------------------------------------------------------------- /Library/src/main/java/com/wunderlist/slidinglayer/transformer/RotationTransformer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SlidingLayer.java 3 | * 4 | * Copyright (C) 2015 6 Wunderkinder GmbH. 5 | * 6 | * @author Jose L Ugia - @Jl_Ugia 7 | * @author Antonio Consuegra - @aconsuegra 8 | * @author Cesar Valiente - @CesarValiente 9 | * @version 1.2.0 10 | * 11 | * Licensed under the Apache License, Version 2.0 (the "License"); 12 | * you may not use this file except in compliance with the License. 13 | * You may obtain a copy of the License at 14 | * 15 | * http://www.apache.org/licenses/LICENSE-2.0 16 | * 17 | * Unless required by applicable law or agreed to in writing, software 18 | * distributed under the License is distributed on an "AS IS" BASIS, 19 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | * See the License for the specific language governing permissions and 21 | * limitations under the License. 22 | */ 23 | 24 | package com.wunderlist.slidinglayer.transformer; 25 | 26 | import android.view.View; 27 | 28 | import com.wunderlist.slidinglayer.LayerTransformer; 29 | import com.wunderlist.slidinglayer.SlidingLayer; 30 | 31 | /** 32 | * Created by joseluisugia on 16/03/15. 33 | */ 34 | public final class RotationTransformer extends LayerTransformer { 35 | 36 | private static final int DEFAULT_ANGLE = 10; 37 | 38 | private final float mMaxAngle; 39 | private float mAngle; 40 | 41 | public RotationTransformer() { 42 | this(DEFAULT_ANGLE); 43 | } 44 | 45 | public RotationTransformer(float maxAngle) { 46 | mMaxAngle = maxAngle; 47 | } 48 | 49 | @Override 50 | protected void onMeasure(View layerView, int screenSide) { 51 | 52 | final int[] pivotPosition = pivotPositionForScreenSide(layerView, screenSide); 53 | layerView.setPivotX(pivotPosition[0]); 54 | layerView.setPivotY(pivotPosition[1]); 55 | 56 | mAngle = mMaxAngle * 57 | (screenSide == SlidingLayer.STICK_TO_LEFT || screenSide == SlidingLayer.STICK_TO_TOP ? -1 : 1); 58 | } 59 | 60 | @Override 61 | public void transform(View layerView, float previewProgress, float layerProgress) { 62 | } 63 | 64 | @Override 65 | protected void internalTransform(View layerView, float previewProgress, float layerProgress, int screenSide) { 66 | 67 | final float progressRatioToAnimate = Math.max(previewProgress, layerProgress); 68 | layerView.setRotation(mAngle * (1 - progressRatioToAnimate)); 69 | } 70 | 71 | private int[] pivotPositionForScreenSide(View layerView, int screenSide) { 72 | 73 | switch (screenSide) { 74 | 75 | case SlidingLayer.STICK_TO_LEFT: 76 | return new int[] { 0, layerView.getMeasuredHeight() }; 77 | 78 | case SlidingLayer.STICK_TO_TOP: 79 | return new int[] { 0, 0 }; 80 | 81 | case SlidingLayer.STICK_TO_RIGHT: 82 | return new int[] { layerView.getMeasuredWidth(), layerView.getMeasuredHeight() }; 83 | 84 | case SlidingLayer.STICK_TO_BOTTOM: 85 | return new int[] { 0, layerView.getMeasuredHeight() }; 86 | 87 | default: 88 | return new int[] { 0, 0 }; 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 24 | 25 | 26 | SlidingLayerSample 27 | 28 | Stick layer to 29 | Transformer 30 | Enable preview mode 31 | Show shadow 32 | Closed offset 33 | Open 34 | Close 35 | 36 | Swipe! 37 | Swipe left! 38 | Swipe right! 39 | Swipe up! 40 | Swipe down! 41 | 42 | Right 43 | Left 44 | Top 45 | Bottom 46 | 47 | None 48 | Alpha 49 | Rotation 50 | Slide Joy! 51 | 52 | n/a 53 | 54 | 55 | @string/label_right 56 | @string/label_left 57 | @string/label_top 58 | @string/label_bottom 59 | 60 | 61 | right 62 | left 63 | top 64 | bottom 65 | 66 | 67 | 68 | @string/label_none 69 | @string/label_alpha 70 | @string/label_rotation 71 | @string/label_slide_joy 72 | 73 | 74 | none 75 | alpha 76 | rotation 77 | slide 78 | 79 | 80 | Go! 81 | 82 | -------------------------------------------------------------------------------- /Library/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 21 | 22 | 4.0.0 23 | 24 | Library 25 | SlidingLayer (Library) 26 | apklib 27 | 28 | 29 | com.wunderlist 30 | sliding-layer 31 | 1.2.5 32 | ../pom.xml 33 | 34 | 35 | 36 | 37 | android 38 | android 39 | ${android.version} 40 | provided 41 | 42 | 43 | android.support 44 | compatibility-v4 45 | ${android-support.version} 46 | provided 47 | 48 | 49 | 50 | 51 | src 52 | 53 | 54 | 55 | com.jayway.maven.plugins.android.generation2 56 | android-maven-plugin 57 | true 58 | 59 | ignored 60 | 61 | 62 | 63 | 64 | org.apache.maven.plugins 65 | maven-javadoc-plugin 66 | 67 | true 68 | 69 | 70 | 71 | 72 | org.codehaus.mojo 73 | build-helper-maven-plugin 74 | 1.7 75 | 76 | 77 | package 78 | 79 | attach-artifact 80 | 81 | 82 | 83 | 84 | jar 85 | ${project.build.directory}/${project.build.finalName}.jar 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /SlidingLayerSample/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 24 | 25 | 30 | 31 | 34 | 35 | 43 | 44 |