diff options
Diffstat (limited to 'Software/Android_Studio')
5 files changed, 300 insertions, 28 deletions
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java index 49b8c07f9..ecce7a74e 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java @@ -47,12 +47,5 @@ public class LoadingFragmentVM extends ViewModelBase<ILoadingFragment> navigationProvider.navigateTo(NavigationView.Home, false); } }.start(); - -/* new Handler().postDelayed(() -> - { - - - - }, 2000);*/ } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java index 46d3f1679..56f426f9c 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java @@ -2,12 +2,22 @@ package com.twine.colorcapture.views.main; import android.app.FragmentTransaction; import android.graphics.Color; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.widget.TextView; +import android.os.Handler; +import android.util.Log; +import android.view.View; +import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.view.animation.Animation.AnimationListener; +import android.view.animation.ScaleAnimation; +import android.widget.Button; +import android.widget.FrameLayout; +import android.widget.LinearLayout; import com.twine.colorcapture.App; import com.twine.colorcapture.R; +import com.twine.colorcapture.core.IAction; +import com.twine.colorcapture.core.Task; import com.twine.colorcapture.databinding.ActivityMainBinding; import com.twine.colorcapture.mvvm.ActivityBase; import com.twine.colorcapture.navigation.INavigationProvider; @@ -19,13 +29,29 @@ import java.util.ArrayList; import javax.inject.Inject; +import butterknife.BindView; +import butterknife.ButterKnife; + public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivityVM> implements IMainActivity { private boolean displayOnboarding = false; - + private boolean isMenuOpened; + @Inject public INavigationProvider navigationProvider; + @BindView(R.id.btnMenu) + Button btnMenu; + + @BindView(R.id.frameMask) + FrameLayout frameMask; + + @BindView(R.id.frameMenu) + FrameLayout frameMenu; + + @BindView(R.id.header) + LinearLayout frameHeader; + // Used to load the 'native-lib' library on application startup. static { @@ -38,10 +64,13 @@ public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - + + ButterKnife.bind(this); + navigationProvider.registerNavigationActivity(this, R.id.fragment_container, "com.twine.colorcapture.views"); - - if (displayOnboarding) { + + if (displayOnboarding) + { PaperOnboardingPage scr1 = new PaperOnboardingPage("Welcome to true color capture", "All hotels and hostels are sorted by hospitality rating", Color.parseColor("#678FB4"), R.drawable.hand_fabric, R.drawable.onboarding_pager_round_icon); @@ -51,29 +80,103 @@ public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivity PaperOnboardingPage scr3 = new PaperOnboardingPage("Stores", "All local stores are categorized for your convenience", Color.parseColor("#9B90BC"), R.drawable.take_picture, R.drawable.onboarding_pager_round_icon); - + ArrayList<PaperOnboardingPage> elements = new ArrayList<>(); elements.add(scr1); elements.add(scr2); elements.add(scr3); - + PaperOnboardingFragment onboardingFragment = PaperOnboardingFragment.newInstance(elements); - + onboardingFragment.setOnRightOutListener(() -> { - + showHeader(); navigationProvider.navigateTo(NavigationView.Loading, false); - + }); - + FragmentTransaction fragmentTransaction = this.getFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.fragment_container, onboardingFragment); fragmentTransaction.commit(); } else - { + { + new Handler().postDelayed(() -> { + showHeader(); + },2000); navigationProvider.navigateTo(NavigationView.Loading, false); } + + Log.d("TCC", "Registering event listener..."); + + btnMenu.setOnClickListener((x) -> + { + Log.d("TCC", "Clicked..."); + openMenu(); + }); + + frameMask.setOnClickListener((x) -> + { + Log.d("TCC", "Closed..."); + closeMenu(); + }); + + frameMask.setClickable(false); + frameMask.setFocusable(false); + } + + @Override + public void onBackPressed() + { + if (!isMenuOpened) + { + super.onBackPressed(); + } + else + { + closeMenu(); + } + } + + private void openMenu() + { + frameMask.setVisibility(View.VISIBLE); + frameMenu.setVisibility(View.VISIBLE); + frameMask.setClickable(true); + frameMask.setFocusable(true); + frameMenu.setClickable(true); + frameMenu.setFocusable(true); + frameMask.setAlpha(1); + animateAlpha(frameMask, 0, 1, 200, true); + frameMenu.setScaleX(1); + scaleView(frameMenu, 0, 1, 200, true, null); + isMenuOpened = true; + } + + private void closeMenu() + { + animateAlpha(frameMask, 1, 0, 200, true); + scaleView(frameMenu, 1, 0, 200, false, () -> + { + frameMask.setClickable(false); + frameMask.setFocusable(false); + frameMenu.setClickable(false); + frameMenu.setFocusable(false); + frameMask.setAlpha(0); + frameMask.setVisibility(View.GONE); + frameMenu.setVisibility(View.GONE); + }); + isMenuOpened = false; + } + + private void showHeader() + { + frameHeader.setVisibility(View.VISIBLE); + } + + private void hideHeader() + { + frameHeader.setVisibility(View.GONE); } @Override @@ -88,9 +191,49 @@ public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivity App.getComponent().inject(this); } + public void scaleView(View v, float startScale, float endScale, int duration, boolean keepResult, IAction onCompleted) + { + Animation anim = new ScaleAnimation( + startScale, endScale, // Start and end values for the X axis scaling + 1f, 1f, // Start and end values for the Y axis scaling + Animation.RELATIVE_TO_SELF, 0f, // Pivot point of X scaling + Animation.RELATIVE_TO_SELF, 0f); // Pivot point of Y scaling + anim.setFillAfter(keepResult); // Needed to keep the result of the animation + anim.setDuration(duration); + anim.setAnimationListener(new AnimationListener() + { + @Override + public void onAnimationStart(Animation animation) + { + + } + + @Override + public void onAnimationEnd(Animation animation) + { + if (onCompleted != null) onCompleted.invoke(); + } + + @Override + public void onAnimationRepeat(Animation animation) + { + + } + }); + v.startAnimation(anim); + } + + public void animateAlpha(View v, float from, float to, int duration, boolean keepResult) + { + AlphaAnimation animation1 = new AlphaAnimation(from, to); + animation1.setDuration(duration); + animation1.setFillAfter(keepResult); + v.startAnimation(animation1); + } + /** * A native method that is implemented by the 'native-lib' native library, * which is packaged with this application. */ - public native String stringFromJNI(); +// public native String stringFromJNI(); } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml index f895a273c..7ac58f008 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml @@ -1,15 +1,18 @@ <?xml version="1.0" encoding="utf-8"?> -<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bind="http://schemas.android.com/apk/res-auto"> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:bind="http://schemas.android.com/apk/res-auto"> <data> - <import type="android.view.View"/> + + <import type="android.view.View" /> + <variable name="vm" type="com.twine.colorcapture.views.main.MainActivityVM" /> </data> - <android.support.v4.widget.DrawerLayout + <FrameLayout android:id="@+id/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -20,18 +23,95 @@ android:layout_height="match_parent" tools:context="com.twine.colorcapture.views.main.MainActivity"> + <LinearLayout + android:id="@+id/header" + android:layout_width="match_parent" + android:layout_height="80dp" + android:background="@android:color/darker_gray" + android:gravity="center_vertical" + android:orientation="horizontal" + android:visibility="gone"> + + <Space + android:layout_width="0dp" + android:layout_height="1dp" + android:layout_weight="1" /> + + <Button + android:id="@+id/btnMenu" + android:layout_width="68dp" + android:layout_height="65dp" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:text="Menu" /> + + <Space + android:layout_width="0dp" + android:layout_height="1dp" + android:layout_weight="1" /> + + <ImageButton + android:id="@+id/imageButton2" + android:layout_width="68dp" + android:layout_height="65dp" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + bind:srcCompat="@drawable/onboarding_pager_circle_icon" /> + + <Space + android:layout_width="0dp" + android:layout_height="1dp" + android:layout_weight="1" /> + + <ImageButton + android:id="@+id/imageButton3" + android:layout_width="68dp" + android:layout_height="65dp" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + bind:srcCompat="@drawable/onboarding_pager_circle_icon" /> + + <Space + android:layout_width="0dp" + android:layout_height="1dp" + android:layout_weight="1" /> + </LinearLayout> + <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:layout_below="@+id/header" /> + + <!--Side Menu--> + <FrameLayout + android:id="@+id/frameMask" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/colorMask" + android:clickable="false" + android:focusable="false" + android:visibility="gone" + android:alpha="0"> + + <FrameLayout + android:id="@+id/frameMenu" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:visibility="gone" + android:scaleX="0" + android:transformPivotX="0dp"> + + <include + layout="@layout/side_menu" + bind:vm="@{vm}" /> + </FrameLayout> </FrameLayout> </RelativeLayout> - <!--Side Menu--> - <!--<include layout="@layout/side_menu" bind:vm="@{vm}" />--> - </android.support.v4.widget.DrawerLayout> + </FrameLayout> </layout> diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml new file mode 100644 index 000000000..07b373724 --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8"?> + +<layout xmlns:android="http://schemas.android.com/apk/res/android"> + + <data> + <variable + name="vm" + type="com.twine.colorcapture.views.main.MainActivityVM"/> + </data> + + <RelativeLayout + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="250dp" + android:layout_height="match_parent" + android:layout_gravity="start" + android:background="#151515"> + + <LinearLayout + android:id="@+id/linear" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="#303030" + android:gravity="center_vertical|start" + android:orientation="horizontal"> + + <ImageView + android:id="@+id/imageView" + android:layout_width="match_parent" + android:layout_height="150dp" + android:adjustViewBounds="true" + android:background="@color/colorPrimaryDark" + android:scaleType="fitXY" + app:srcCompat="@drawable/hand_phone" /> + + <TextView + android:id="@+id/txtUserName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="24sp" /> + </LinearLayout> + + <ListView + android:id="@+id/menuList" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:listSelector="@android:color/transparent" + android:layout_alignParentStart="true" + android:layout_below="@+id/linear" + android:choiceMode="singleChoice" + android:background="@color/colorPrimaryDark" + android:padding="10dp" /> + </RelativeLayout> +</layout>
\ No newline at end of file diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/values/colors.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/values/colors.xml index d446dbf48..451d7b6f1 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/res/values/colors.xml +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/values/colors.xml @@ -5,4 +5,7 @@ <color name="colorAccent">#40d6ff</color> <color name="colorPlay">#5df15d</color> <color name="colorStop">#f24954</color> + + <color name="colorMask">#BB000000</color> + <color name="colorTransparent">#00000000</color> </resources> |
