aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-03-19 19:23:13 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-03-19 19:23:13 +0200
commit3fbd939489f046bff511c08b93951821b0791a48 (patch)
tree5a6ad151e74ab94058e61fa4f670d27e299908a0
parent24d0a8782f8324f80222251a4ff4977d1258e3a8 (diff)
downloadTango-3fbd939489f046bff511c08b93951821b0791a48.tar.gz
Tango-3fbd939489f046bff511c08b93951821b0791a48.zip
Working on TCC header and menu.
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragmentVM.java7
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivity.java171
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_main.xml94
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/layout/side_menu.xml53
-rw-r--r--Software/Android_Studio/ColorCapture/app/src/main/res/values/colors.xml3
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>