├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── MIGRATION.md ├── README.md ├── app ├── .gitignore ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── example │ │ └── slideup │ │ ├── SlideDownViewActivity.java │ │ ├── SlideEndViewActivity.java │ │ ├── SlideStartViewActivity.java │ │ └── SlideUpViewActivity.java │ └── res │ ├── drawable │ ├── ic_arrow_drop_down_black_24dp.xml │ ├── ic_call_black_24dp.xml │ ├── ic_keyboard_arrow_down_black_24dp.xml │ ├── ic_keyboard_arrow_left_black_24dp.xml │ ├── ic_keyboard_arrow_right_black_24dp.xml │ ├── ic_keyboard_arrow_up_black_24dp.xml │ ├── mushroom.png │ ├── rounded_down_corners_bg.xml │ ├── rounded_end_corners_bg.xml │ ├── rounded_start_corners_bg.xml │ └── rounded_up_corners_bg.xml │ ├── layout │ ├── activity_slide_down_view.xml │ ├── activity_slide_end_view.xml │ ├── activity_slide_start_view.xml │ ├── activity_slide_up_view.xml │ ├── content_slide_down_view.xml │ ├── content_slide_end_view.xml │ ├── content_slide_start_view.xml │ └── content_slide_up_view.xml │ ├── menu │ ├── menu_slide_down_view.xml │ ├── menu_slide_end_view.xml │ ├── menu_slide_start_view.xml │ └── menu_slide_up_view.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-v21 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── .gitignore ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── mancj │ │ └── slideup │ │ ├── AnimationProcessor.java │ │ ├── HorizontalTouchConsumer.java │ │ ├── Internal.java │ │ ├── LoggerNotifier.java │ │ ├── OnGlobalLayoutSingleListener.java │ │ ├── SlideUp.java │ │ ├── SlideUpBuilder.java │ │ ├── TouchConsumer.java │ │ └── VerticalTouchConsumer.java │ └── res │ ├── values-ldrtl │ └── params.xml │ ├── values-ru │ └── strings.xml │ └── values │ ├── params.xml │ └── strings.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | *build/ 3 | captures/ 4 | local.properties 5 | .idea/ 6 | */*.iml 7 | /SlideUp-Android.iml 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## v2.2.8 (03.01.2018) 2 | - Add capability to trigger SlideUp (up/down/start/end) from another View **thanks [@toteto](https://github.com/toteto)** 3 | - Dropped support Android < 14 api level 4 | 5 | ## v2.2.7.1 (25.07.2017) 6 | - Fixed wrong identifiers for [AboutLibraries](https://github.com/mikepenz/AboutLibraries) (© MikePenz) 7 | 8 | ## v2.2.7 (13.07.2017) 9 | - Added definition info for [AboutLibraries](https://github.com/mikepenz/AboutLibraries) (© MikePenz) 10 | 11 | ## v2.2.6 (13.07.2017) 12 | - Fixed problems with clicks onto `view` with `SlideUp`-effect 13 | - `SlideUp.Builder` was moved into separated class and renamed to `SlideUpBuilder` 14 | #### SlideUp 15 | - Method `setTouchebleArea(float touchableArea)` was split to two methods: 16 | - `setTouchebleAreaDp(float touchableArea)` 17 | - `setTouchebleAreaPx(float touchableArea)` 18 | - Method `getTouchebleArea()` was split to two methods: 19 | - `getTouchebleAreaDp()` 20 | - `getTouchebleAreaPx()` 21 | #### SlideUpBuilder 22 | - Method `withTouchebleArea(float touchableArea)` was split to two methods: 23 | - `withTouchebleAreaDp(float touchableArea)` 24 | - `withTouchebleAreaPx(float touchableArea)` 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Mansur 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MIGRATION.md: -------------------------------------------------------------------------------- 1 | # v2.2.6 → ... 2 | - `SlideUp.Builder` was moved into separated class and renamed to `SlideUpBuilder` 3 | #### SlideUp 4 | - method `void : setTouchebleArea(float touchableArea)` was split to two methods: 5 | - `void : setTouchebleAreaDp(float touchableArea)` 6 | - `void : setTouchebleAreaPx(float touchableArea)` 7 | - method `float : getTouchebleArea()` was split to two methods: 8 | - `float : getTouchebleAreaDp()` 9 | - `float : getTouchebleAreaPx()` 10 | #### SlideUpBuilder 11 | - method `SlideUpBuilder : withTouchebleArea(float touchableArea)` was split to two methods: 12 | - `SlideUpBuilder : withTouchebleAreaDp(float touchableArea)` 13 | - `SlideUpBuilder : withTouchebleAreaPx(float touchableArea)` 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NOT MAINTAINED ANYMORE 2 | 3 | # SlideUp-Android 4 | SlideUp is a small library that allows you to add sweet slide effect to any view. Slide your views up, down, left or right with SlideUp! 5 | 6 | [![Release](https://jitpack.io/v/mancj/SlideUp-Android.svg)](https://jitpack.io/#mancj/SlideUp-Android) 7 | --- 8 | 9 | [Example gif 1](https://i.imgur.com/7S5qqSy.gifv) 10 | 11 | [Example gif 2](https://i.imgur.com/hKWqyl1.gif) 12 | 13 | ----- 14 | # Usage 15 | **Get SlideUp library** 16 | 17 | Add the JitPack repository to your build file. 18 | Add it in your root build.gradle at the end of repositories: 19 | ```groovy 20 | allprojects { 21 | repositories { 22 | ... 23 | maven { url 'https://jitpack.io' } 24 | } 25 | } 26 | ``` 27 | Add the dependency 28 | ```groovy 29 | dependencies { 30 | compile "com.github.mancj:SlideUp-Android:$current_version" 31 | compile 'ru.ztrap:RxSlideUp2:2.x.x' //optional, for reactive listeners based on RxJava-2 32 | compile 'ru.ztrap:RxSlideUp:1.x.x' //optional, for reactive listeners based on RxJava 33 | } 34 | ``` 35 | 36 | **To add the SlideUp into your project, follow these three simple steps:** 37 | 38 | ### Step 1: 39 | create any type of layout 40 | 41 | ```xml 42 | 46 | ``` 47 | 48 | ### Step 2: 49 | Find that view in your activity/fragment 50 | ```java 51 | View slideView = findViewById(R.id.slideView); 52 | ``` 53 | 54 | ### Step 3: 55 | Create a SlideUp object and pass in your view 56 | ```java 57 | slideUp = new SlideUpBuilder(slideView) 58 | .withStartState(SlideUp.State.HIDDEN) 59 | .withStartGravity(Gravity.BOTTOM) 60 | 61 | //.withSlideFromOtherView(anotherView) 62 | //.withGesturesEnabled() 63 | //.withHideSoftInputWhenDisplayed() 64 | //.withInterpolator() 65 | //.withAutoSlideDuration() 66 | //.withLoggingEnabled() 67 | //.withTouchableAreaPx() 68 | //.withTouchableAreaDp() 69 | //.withListeners() 70 | //.withSavedState() 71 | .build(); 72 | ``` 73 | ### Enjoy! 74 | 75 | # Reactive extensions 76 | 77 | - [RxSlideUp](https://github.com/zTrap/RxSlideUp) - Listening events in reactive style 78 | 79 | # Advanced example 80 | [SlideUpViewActivity.java](https://github.com/mancj/SlideUp-Android/blob/master/app/src/main/java/com/example/slideup/SlideUpViewActivity.java) 81 | ```java 82 | rootView = findViewById(R.id.rootView); 83 | slideView = findViewById(R.id.slideView); 84 | dim = findViewById(R.id.dim); 85 | fab = (FloatingActionButton) findViewById(R.id.fab); 86 | 87 | 88 | slideUp = new SlideUpBuilder(slideView) 89 | .withListeners(new SlideUp.Listener.Events() { 90 | @Override 91 | public void onSlide(float percent) { 92 | dim.setAlpha(1 - (percent / 100)); 93 | if (percent < 100 && fab.isShown()) { 94 | // slideUp started showing 95 | fab.hide(); 96 | } 97 | } 98 | 99 | @Override 100 | public void onVisibilityChanged(int visibility) { 101 | if (visibility == View.GONE){ 102 | fab.show(); 103 | } 104 | } 105 | }) 106 | .withStartGravity(Gravity.TOP) 107 | .withLoggingEnabled(true) 108 | .withStartState(SlideUp.State.HIDDEN) 109 | .withSlideFromOtherView(rootView) 110 | .build(); 111 | 112 | fab.setOnClickListener(new View.OnClickListener() { 113 | @Override 114 | public void onClick(View view) { 115 | slideUp.show(); 116 | } 117 | }); 118 | ``` 119 | The player is designed by [Jauzee](https://github.com/Jauzee) 120 | 121 | # Migration 122 | 123 | - See [MIGRATION.md](https://github.com/mancj/SlideUp-Android/blob/master/MIGRATION.md) 124 | 125 | # Documentation 126 | 127 | - See [javadocs](https://jitpack.io/com/github/mancj/SlideUp-Android/2.2.7.1/javadoc/) 128 | 129 | # Changelog 130 | 131 | - See [CHANGELOG.md](https://github.com/mancj/SlideUp-Android/blob/master/CHANGELOG.md) 132 | 133 | # Contract 134 | 135 | Please let us know, if you use the library in your applications. 136 | We want to collect and publish this list. 137 | 138 | # License 139 | 140 | MIT License 141 | 142 | Copyright (c) 2018 Mansur 143 | 144 | Permission is hereby granted, free of charge, to any person obtaining a copy 145 | of this software and associated documentation files (the "Software"), to deal 146 | in the Software without restriction, including without limitation the rights 147 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 148 | copies of the Software, and to permit persons to whom the Software is 149 | furnished to do so, subject to the following conditions: 150 | 151 | The above copyright notice and this permission notice shall be included in all 152 | copies or substantial portions of the Software. 153 | 154 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 155 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 156 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 157 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 158 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 159 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 160 | SOFTWARE. 161 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 27 5 | buildToolsVersion '27.0.2' 6 | defaultConfig { 7 | applicationId "com.example.slideup" 8 | minSdkVersion 14 9 | targetSdkVersion 27 10 | versionCode 1 11 | versionName "1.0" 12 | 13 | vectorDrawables.useSupportLibrary = true 14 | } 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | } 19 | } 20 | 21 | lintOptions { 22 | abortOnError false 23 | } 24 | } 25 | 26 | dependencies { 27 | implementation "com.android.support:appcompat-v7:${versions.support}" 28 | implementation "com.android.support:design:${versions.support}" 29 | implementation project(path: ':library') 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 25 | 26 | 30 | 31 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/slideup/SlideDownViewActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.slideup; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.support.design.widget.FloatingActionButton; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.support.v7.widget.Toolbar; 8 | import android.view.Gravity; 9 | import android.view.Menu; 10 | import android.view.MenuItem; 11 | import android.view.View; 12 | import android.widget.Toast; 13 | 14 | import com.mancj.slideup.SlideUp; 15 | import com.mancj.slideup.SlideUpBuilder; 16 | 17 | public class SlideDownViewActivity extends AppCompatActivity { 18 | private SlideUp slideUp; 19 | private View dim; 20 | private View sliderView; 21 | private FloatingActionButton fab; 22 | Toast toast; 23 | 24 | @Override 25 | protected void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_slide_down_view); 28 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 29 | setSupportActionBar(toolbar); 30 | 31 | sliderView = findViewById(R.id.slideView); 32 | sliderView.setOnClickListener(new View.OnClickListener() { 33 | @Override 34 | public void onClick(View v) { 35 | if (toast != null){ 36 | toast.cancel(); 37 | } 38 | toast = Toast.makeText(SlideDownViewActivity.this, "click", Toast.LENGTH_SHORT); 39 | toast.show(); 40 | } 41 | }); 42 | dim = findViewById(R.id.dim); 43 | fab = (FloatingActionButton) findViewById(R.id.fab); 44 | 45 | slideUp = new SlideUpBuilder(sliderView) 46 | .withListeners(new SlideUp.Listener.Events() { 47 | @Override 48 | public void onSlide(float percent) { 49 | dim.setAlpha(1 - (percent / 100)); 50 | } 51 | 52 | @Override 53 | public void onVisibilityChanged(int visibility) { 54 | if (visibility == View.GONE){ 55 | fab.show(); 56 | } 57 | } 58 | }) 59 | .withStartGravity(Gravity.TOP) 60 | .withLoggingEnabled(true) 61 | .withStartState(SlideUp.State.HIDDEN) 62 | .build(); 63 | 64 | fab.setOnClickListener(new View.OnClickListener() { 65 | @Override 66 | public void onClick(View view) { 67 | slideUp.show(); 68 | fab.hide(); 69 | } 70 | }); 71 | 72 | } 73 | 74 | @Override 75 | public boolean onCreateOptionsMenu(Menu menu) { 76 | getMenuInflater().inflate(R.menu.menu_slide_down_view, menu); 77 | return true; 78 | } 79 | 80 | @Override 81 | public boolean onOptionsItemSelected(MenuItem item) { 82 | switch (item.getItemId()){ 83 | case R.id.action_slide_up: 84 | startActivity(new Intent(this, SlideUpViewActivity.class)); 85 | break; 86 | case R.id.action_slide_start: 87 | startActivity(new Intent(this, SlideStartViewActivity.class)); 88 | break; 89 | case R.id.action_slide_end: 90 | startActivity(new Intent(this, SlideEndViewActivity.class)); 91 | break; 92 | } 93 | return super.onOptionsItemSelected(item); 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/slideup/SlideEndViewActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.slideup; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.support.design.widget.FloatingActionButton; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.support.v7.widget.Toolbar; 8 | import android.view.Gravity; 9 | import android.view.Menu; 10 | import android.view.MenuItem; 11 | import android.view.View; 12 | import android.widget.Toast; 13 | 14 | import com.mancj.slideup.SlideUp; 15 | import com.mancj.slideup.SlideUpBuilder; 16 | 17 | public class SlideEndViewActivity extends AppCompatActivity { 18 | private SlideUp slideUp; 19 | private View dim; 20 | private View sliderView; 21 | private FloatingActionButton fab; 22 | Toast toast; 23 | 24 | @Override 25 | protected void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_slide_end_view); 28 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 29 | setSupportActionBar(toolbar); 30 | 31 | sliderView = findViewById(R.id.slideView); 32 | sliderView.setOnClickListener(new View.OnClickListener() { 33 | @Override 34 | public void onClick(View v) { 35 | if (toast != null){ 36 | toast.cancel(); 37 | } 38 | toast = Toast.makeText(SlideEndViewActivity.this, "click", Toast.LENGTH_SHORT); 39 | toast.show(); 40 | } 41 | }); 42 | dim = findViewById(R.id.dim); 43 | fab = (FloatingActionButton) findViewById(R.id.fab); 44 | 45 | slideUp = new SlideUpBuilder(sliderView) 46 | .withListeners(new SlideUp.Listener.Events() { 47 | @Override 48 | public void onSlide(float percent) { 49 | dim.setAlpha(1 - (percent / 100)); 50 | } 51 | 52 | @Override 53 | public void onVisibilityChanged(int visibility) { 54 | if (visibility == View.GONE){ 55 | fab.show(); 56 | } 57 | } 58 | }) 59 | .withStartGravity(Gravity.END) 60 | .withLoggingEnabled(true) 61 | .withStartState(SlideUp.State.HIDDEN) 62 | .withSlideFromOtherView(findViewById(R.id.rootView)) 63 | .build(); 64 | 65 | fab.setOnClickListener(new View.OnClickListener() { 66 | @Override 67 | public void onClick(View view) { 68 | slideUp.show(); 69 | fab.hide(); 70 | } 71 | }); 72 | 73 | } 74 | 75 | @Override 76 | public boolean onCreateOptionsMenu(Menu menu) { 77 | getMenuInflater().inflate(R.menu.menu_slide_end_view, menu); 78 | return true; 79 | } 80 | 81 | @Override 82 | public boolean onOptionsItemSelected(MenuItem item) { 83 | switch (item.getItemId()){ 84 | case R.id.action_slide_up: 85 | startActivity(new Intent(this, SlideUpViewActivity.class)); 86 | break; 87 | case R.id.action_slide_start: 88 | startActivity(new Intent(this, SlideStartViewActivity.class)); 89 | break; 90 | case R.id.action_slide_down: 91 | startActivity(new Intent(this, SlideDownViewActivity.class)); 92 | break; 93 | } 94 | return super.onOptionsItemSelected(item); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/slideup/SlideStartViewActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.slideup; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.support.design.widget.FloatingActionButton; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.support.v7.widget.Toolbar; 8 | import android.view.Gravity; 9 | import android.view.Menu; 10 | import android.view.MenuItem; 11 | import android.view.View; 12 | import android.widget.Toast; 13 | 14 | import com.mancj.slideup.SlideUp; 15 | import com.mancj.slideup.SlideUpBuilder; 16 | 17 | public class SlideStartViewActivity extends AppCompatActivity { 18 | private SlideUp slideUp; 19 | private View dim; 20 | private View sliderView; 21 | private FloatingActionButton fab; 22 | Toast toast; 23 | 24 | @Override 25 | protected void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_slide_start_view); 28 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 29 | setSupportActionBar(toolbar); 30 | 31 | sliderView = findViewById(R.id.slideView); 32 | sliderView.setOnClickListener(new View.OnClickListener() { 33 | @Override 34 | public void onClick(View v) { 35 | if (toast != null){ 36 | toast.cancel(); 37 | } 38 | toast = Toast.makeText(SlideStartViewActivity.this, "click", Toast.LENGTH_SHORT); 39 | toast.show(); 40 | } 41 | }); 42 | dim = findViewById(R.id.dim); 43 | fab = (FloatingActionButton) findViewById(R.id.fab); 44 | 45 | slideUp = new SlideUpBuilder(sliderView) 46 | .withListeners(new SlideUp.Listener.Events() { 47 | @Override 48 | public void onSlide(float percent) { 49 | dim.setAlpha(1 - (percent / 100)); 50 | } 51 | 52 | @Override 53 | public void onVisibilityChanged(int visibility) { 54 | if (visibility == View.GONE){ 55 | fab.show(); 56 | } 57 | } 58 | }) 59 | .withStartGravity(Gravity.START) 60 | .withLoggingEnabled(true) 61 | .withStartState(SlideUp.State.HIDDEN) 62 | .build(); 63 | 64 | fab.setOnClickListener(new View.OnClickListener() { 65 | @Override 66 | public void onClick(View view) { 67 | slideUp.show(); 68 | fab.hide(); 69 | } 70 | }); 71 | 72 | } 73 | 74 | @Override 75 | public boolean onCreateOptionsMenu(Menu menu) { 76 | getMenuInflater().inflate(R.menu.menu_slide_start_view, menu); 77 | return true; 78 | } 79 | 80 | @Override 81 | public boolean onOptionsItemSelected(MenuItem item) { 82 | switch (item.getItemId()){ 83 | case R.id.action_slide_up: 84 | startActivity(new Intent(this, SlideUpViewActivity.class)); 85 | break; 86 | case R.id.action_slide_end: 87 | startActivity(new Intent(this, SlideEndViewActivity.class)); 88 | break; 89 | case R.id.action_slide_down: 90 | startActivity(new Intent(this, SlideDownViewActivity.class)); 91 | break; 92 | } 93 | return super.onOptionsItemSelected(item); 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/slideup/SlideUpViewActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.slideup; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.support.design.widget.FloatingActionButton; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.support.v7.widget.Toolbar; 8 | import android.view.Gravity; 9 | import android.view.Menu; 10 | import android.view.MenuItem; 11 | import android.view.View; 12 | import android.widget.Toast; 13 | 14 | import com.mancj.slideup.SlideUp; 15 | import com.mancj.slideup.SlideUpBuilder; 16 | 17 | public class SlideUpViewActivity extends AppCompatActivity { 18 | private SlideUp slideUp; 19 | private View dim; 20 | private View sliderView; 21 | private FloatingActionButton fab; 22 | Toast toast; 23 | 24 | @Override 25 | protected void onCreate(Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_slide_up_view); 28 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 29 | setSupportActionBar(toolbar); 30 | 31 | sliderView = findViewById(R.id.slideView); 32 | sliderView.setOnClickListener(new View.OnClickListener() { 33 | @Override 34 | public void onClick(View v) { 35 | if (toast != null){ 36 | toast.cancel(); 37 | } 38 | toast = Toast.makeText(SlideUpViewActivity.this, "click", Toast.LENGTH_SHORT); 39 | toast.show(); 40 | } 41 | }); 42 | dim = findViewById(R.id.dim); 43 | fab = (FloatingActionButton) findViewById(R.id.fab); 44 | 45 | slideUp = new SlideUpBuilder(sliderView) 46 | .withListeners(new SlideUp.Listener.Events() { 47 | @Override 48 | public void onSlide(float percent) { 49 | dim.setAlpha(1 - (percent / 100)); 50 | if (fab.isShown() && percent < 100) { 51 | fab.hide(); 52 | } 53 | } 54 | 55 | @Override 56 | public void onVisibilityChanged(int visibility) { 57 | if (visibility == View.GONE){ 58 | fab.show(); 59 | } 60 | } 61 | }) 62 | .withStartGravity(Gravity.BOTTOM) 63 | .withLoggingEnabled(true) 64 | .withGesturesEnabled(true) 65 | .withStartState(SlideUp.State.HIDDEN) 66 | .withSlideFromOtherView(findViewById(R.id.rootView)) 67 | .build(); 68 | 69 | fab.setOnClickListener(new View.OnClickListener() { 70 | @Override 71 | public void onClick(View view) { 72 | slideUp.show(); 73 | } 74 | }); 75 | 76 | } 77 | 78 | @Override 79 | public boolean onCreateOptionsMenu(Menu menu) { 80 | getMenuInflater().inflate(R.menu.menu_slide_up_view, menu); 81 | return true; 82 | } 83 | 84 | 85 | @Override 86 | public boolean onOptionsItemSelected(MenuItem item) { 87 | switch (item.getItemId()){ 88 | case R.id.action_slide_start: 89 | startActivity(new Intent(this, SlideStartViewActivity.class)); 90 | break; 91 | case R.id.action_slide_end: 92 | startActivity(new Intent(this, SlideEndViewActivity.class)); 93 | break; 94 | case R.id.action_slide_down: 95 | startActivity(new Intent(this, SlideDownViewActivity.class)); 96 | break; 97 | } 98 | return super.onOptionsItemSelected(item); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_drop_down_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_call_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_down_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_left_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_up_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/mushroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mancj/SlideUp-Android/6af7fb8b8225adcb898d10e61adebaee65261bf0/app/src/main/res/drawable/mushroom.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_down_corners_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_end_corners_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_start_corners_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_up_corners_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_slide_down_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 23 | 24 | 31 | 32 | 38 | 39 | 40 | 41 | 42 | 43 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_slide_end_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 24 | 25 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_slide_start_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 23 | 24 | 31 | 32 | 38 | 39 | 40 | 41 | 42 | 43 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_slide_up_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 24 | 25 | 31 | 32 | 38 | 39 | 40 | 41 | 43 | 44 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_slide_down_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 21 | 22 | 28 | 29 | 36 | 37 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_slide_end_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 21 | 22 | 28 | 29 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_slide_start_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 21 | 22 | 28 | 29 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_slide_up_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 21 | 22 | 28 | 29 | 36 | 37 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_slide_down_view.xml: -------------------------------------------------------------------------------- 1 | 5 | 9 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_slide_end_view.xml: -------------------------------------------------------------------------------- 1 | 5 | 9 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_slide_start_view.xml: -------------------------------------------------------------------------------- 1 | 5 | 9 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_slide_up_view.xml: -------------------------------------------------------------------------------- 1 | 5 | 9 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mancj/SlideUp-Android/6af7fb8b8225adcb898d10e61adebaee65261bf0/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mancj/SlideUp-Android/6af7fb8b8225adcb898d10e61adebaee65261bf0/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mancj/SlideUp-Android/6af7fb8b8225adcb898d10e61adebaee65261bf0/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mancj/SlideUp-Android/6af7fb8b8225adcb898d10e61adebaee65261bf0/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mancj/SlideUp-Android/6af7fb8b8225adcb898d10e61adebaee65261bf0/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #cecece 7 | #bf000000 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | SlideUp 3 | SlideUp 4 | SlideDown 5 | SlideStart 6 | SlideEnd 7 | SlideUp sample 8 | SlideDown sample 9 | SlideStart sample 10 | SlideEnd sample 11 | Settings 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |