diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-04-10 00:46:55 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2019-04-10 00:46:55 +0300 |
| commit | 76e9404d4bc07e59651a7a3093ce0a7eba5372ed (patch) | |
| tree | 3610530964fda890707839f5d840a9edd206d838 /Software/Android_Studio | |
| parent | aa9ea3afea21a3b95ef4f725fc2424d0ac367c7d (diff) | |
| download | Tango-76e9404d4bc07e59651a7a3093ce0a7eba5372ed.tar.gz Tango-76e9404d4bc07e59651a7a3093ce0a7eba5372ed.zip | |
Working on TCC..
Diffstat (limited to 'Software/Android_Studio')
32 files changed, 551 insertions, 372 deletions
diff --git a/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml b/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml index f0e6277c9..df39e776f 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml +++ b/Software/Android_Studio/ColorCapture/app/src/main/AndroidManifest.xml @@ -25,13 +25,14 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="false" android:theme="@style/AppTheme"> - <activity android:name=".views.main.MainActivity"> + <activity android:name=".views.loading.LoadingActivity" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> + <activity android:name=".views.main.MainActivity"></activity> </application> </manifest>
\ No newline at end of file diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java index 466b6de7e..e23f3e7e7 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/controls/ToggleImageButton.java @@ -4,16 +4,25 @@ import android.content.Context; import android.content.res.TypedArray; import android.databinding.BindingAdapter; import android.databinding.BindingMethod; +import android.databinding.BindingMethods; import android.databinding.InverseBindingAdapter; import android.databinding.InverseBindingListener; import android.databinding.InverseBindingMethod; import android.databinding.InverseBindingMethods; import android.graphics.drawable.Drawable; import android.util.AttributeSet; +import android.util.Log; import android.widget.Checkable; +import android.widget.CompoundButton; import com.twine.colorcapture.R; +@BindingMethods({ + @BindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "setChecked"), +}) +@InverseBindingMethods({ + @InverseBindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "getChecked"), +}) public class ToggleImageButton extends android.support.v7.widget.AppCompatImageButton implements Checkable { private OnCheckedChangeListener onCheckedChangeListener; @@ -57,6 +66,7 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB @Override public void setChecked(boolean checked) { + Log.d("DATA BINDING", "setChecked: "); setSelected(checked); if (checked) @@ -74,6 +84,12 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB } } + public Boolean getChecked() + { + Log.d("DATA BINDING", "getChecked: "); + return isChecked(); + } + @Override public void toggle() { @@ -83,7 +99,15 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB @Override public boolean performClick() { - toggle(); + if (!isChecked()) + { + setChecked(true); + } + else + { + return true; + } + return super.performClick(); } @@ -102,21 +126,23 @@ public class ToggleImageButton extends android.support.v7.widget.AppCompatImageB public void onCheckedChanged(ToggleImageButton buttonView, boolean isChecked); } - @BindingAdapter(value = "cccAttrChanged") - public static void createCheckedBinding(ToggleImageButton btn, InverseBindingListener listener) + @BindingAdapter(value = "checkedAttrChanged") + public static void setListener(ToggleImageButton btn, final InverseBindingListener attrChange) { - btn.setOnCheckedChangeListener((e, r) -> listener.onChange()); + btn.setOnCheckedChangeListener((e, r) -> attrChange.onChange()); } - @BindingAdapter("ccc") - public static void setChecked(ToggleImageButton view, boolean value) + @BindingAdapter("checked") + public static void setChecked(ToggleImageButton view, Boolean value) { + Log.d("DATA BINDING", "setChecked: "); view.setChecked(value); } - @InverseBindingAdapter(attribute = "ccc") - public static boolean getChecked(ToggleImageButton view) + @InverseBindingAdapter(attribute = "checked") + public static Boolean getChecked(ToggleImageButton view) { + Log.d("DATA BINDING", "getChecked: "); return view.isChecked(); } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java index b3a790039..700cb74ca 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ApplicationComponent.java @@ -1,8 +1,8 @@ package com.twine.colorcapture.dagger; import com.twine.colorcapture.views.capture.CaptureFragment; -import com.twine.colorcapture.views.home.HomeFragment; -import com.twine.colorcapture.views.loading.LoadingFragment; +import com.twine.colorcapture.views.mycolors.MyColorsFragment; +import com.twine.colorcapture.views.loading.LoadingActivity; import com.twine.colorcapture.views.main.MainActivity; import com.twine.colorcapture.views.main.MainActivityVM; @@ -18,14 +18,11 @@ import dagger.Component; @Component(modules = {ApplicationModule.class, ViewModelsModule.class, EventBusModule.class, NotificationModule.class, NavigationModule.class}) public interface ApplicationComponent { - void inject(MainActivity view); - void inject(LoadingFragment view); + void inject(LoadingActivity view); - void inject(HomeFragment view); + void inject(MyColorsFragment view); void inject(CaptureFragment view); - - MainActivityVM provideMainActivityVM(); } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java index 476f248e0..7ccb6b06e 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/NavigationModule.java @@ -14,8 +14,8 @@ public class NavigationModule { @Provides @Singleton - public INavigationProvider provideNavigation() + public INavigationProvider provideNavigation(Context context) { - return new AndroidNavigationProvider(); + return new AndroidNavigationProvider(context); } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java index ff2e83a61..5726fdb71 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/dagger/ViewModelsModule.java @@ -4,8 +4,8 @@ import com.squareup.otto.Bus; import com.twine.colorcapture.navigation.INavigationProvider; import com.twine.colorcapture.notification.INotificationProvider; import com.twine.colorcapture.views.capture.CaptureFragmentVM; -import com.twine.colorcapture.views.home.HomeFragmentVM; -import com.twine.colorcapture.views.loading.LoadingFragmentVM; +import com.twine.colorcapture.views.loading.LoadingActivityVM; +import com.twine.colorcapture.views.mycolors.MyColorsFragmentVM; import com.twine.colorcapture.views.main.MainActivityVM; import javax.inject.Singleton; @@ -30,16 +30,16 @@ public class ViewModelsModule @Provides @Singleton - public LoadingFragmentVM provideLoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) + public LoadingActivityVM provideLoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) { - return new LoadingFragmentVM(eventBus, notificationProvider, navigationProvider); + return new LoadingActivityVM(eventBus, notificationProvider, navigationProvider); } @Provides @Singleton - public HomeFragmentVM provideHomeFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) + public MyColorsFragmentVM provideMyColorsFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) { - return new HomeFragmentVM(navigationProvider); + return new MyColorsFragmentVM(navigationProvider); } @Provides diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java index 386d9c525..7878d1b81 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ActivityBase.java @@ -6,11 +6,14 @@ import android.databinding.ViewDataBinding; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; +import android.view.Window; +import android.view.WindowManager; import android.widget.EditText; import android.widget.Toast; import com.mobsandgeeks.saripaar.ValidationError; import com.mobsandgeeks.saripaar.Validator; +import com.twine.colorcapture.R; import java.lang.reflect.Method; import java.util.List; @@ -48,7 +51,14 @@ public abstract class ActivityBase<BindingView extends ViewDataBinding, VM exten public BindingView binding; @Override - protected void onCreate(Bundle savedInstanceState) { + protected void onCreate(Bundle savedInstanceState) + { + Window window = getWindow(); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryBackground)); + + overridePendingTransition(R.anim.zoom_in,R.anim.zoom_out); + super.onCreate(savedInstanceState); inject(); diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java index 41bfb052b..30cc259d6 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/BindingAdapters.java @@ -1,9 +1,42 @@ package com.twine.colorcapture.mvvm; +import android.databinding.BindingAdapter; import android.databinding.BindingConversion; +import android.databinding.BindingMethod; +import android.databinding.BindingMethods; +import android.databinding.InverseBindingAdapter; +import android.databinding.InverseBindingListener; import android.databinding.InverseBindingMethod; +import android.databinding.InverseBindingMethods; +import android.util.Log; +import com.twine.colorcapture.controls.ToggleImageButton; + +//@BindingMethods({ +// @BindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "setChecked"), +//}) +//@InverseBindingMethods({ +// @InverseBindingMethod(type = ToggleImageButton.class, attribute = "checked", method = "getChecked"), +//}) public class BindingAdapters { - +// @BindingAdapter(value = "checkedAttrChanged") +// public static void setListener(ToggleImageButton btn, final InverseBindingListener attrChange) +// { +// btn.setOnCheckedChangeListener((e, r) -> attrChange.onChange()); +// } +// +// @BindingAdapter("checked") +// public static void setChecked(ToggleImageButton view, Boolean value) +// { +// Log.d("DATA BINDING", "setChecked: "); +// view.setChecked(value); +// } +// +// @InverseBindingAdapter(attribute = "checked") +// public static Boolean getChecked(ToggleImageButton view) +// { +// Log.d("DATA BINDING", "getChecked: "); +// return view.isChecked(); +// } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java index 6856c071d..930e16dec 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/DependencyProperty.java @@ -5,6 +5,7 @@ import android.databinding.ObservableField; public class DependencyProperty <T> extends ObservableField<T> { private boolean blockNotify; + private boolean blockCallback; /** * The interface On property changed callback. @@ -76,6 +77,14 @@ public class DependencyProperty <T> extends ObservableField<T> { blockNotify = true; set(value); + blockNotify = false; + } + + public void setNoCallback(T value) + { + blockCallback = true; + set(value); + blockCallback = false; } @Override @@ -85,8 +94,6 @@ public class DependencyProperty <T> extends ObservableField<T> { super.notifyChange(); } - - blockNotify = false; } private void init() @@ -98,7 +105,7 @@ public class DependencyProperty <T> extends ObservableField<T> @Override public void onPropertyChanged(android.databinding.Observable observable, int i) { - if (that.callback != null) + if (that.callback != null && !that.blockCallback) { that.callback.onPropertyChanged(that, that.get()); } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java index 8ee60bec7..184c4fb6d 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/mvvm/ExtendedObject.java @@ -1,6 +1,8 @@ package com.twine.colorcapture.mvvm; -public class ExtendedObject +import android.databinding.BaseObservable; + +public class ExtendedObject extends BaseObservable { } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java index 175a99b77..88cee5a8f 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/AndroidNavigationProvider.java @@ -2,6 +2,8 @@ package com.twine.colorcapture.navigation; import android.app.FragmentManager; import android.app.FragmentTransaction; +import android.content.Context; +import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.util.Log; @@ -10,6 +12,12 @@ import com.twine.colorcapture.mvvm.ExtendedObject; import com.twine.colorcapture.mvvm.FragmentBase; import com.twine.colorcapture.core.IAction1; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.inject.Inject; + /** * Represents an android navigation provider. */ @@ -17,31 +25,39 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga { private AppCompatActivity activity; private FragmentBase currentFragment; + private String currentFragmentName; private int fragment_container; - private String basePackagePath; + private String basePackagePath = "com.twine.colorcapture.views"; private boolean isFirst = true; - + private Context context; + private List<FragmentNavigatedListener> fragmentNavigatedListeners; + + @Inject + public AndroidNavigationProvider(Context context) + { + this.context = context; + fragmentNavigatedListeners = new ArrayList<>(); + } + @Override - public void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId, String basePackagePath) + public void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId) { this.activity = activity; this.fragment_container = fragmentContainerId; - this.basePackagePath = basePackagePath; } - @Override - public void navigateTo(Enum fragmentValue, boolean addToHistory) + public void navigateTo(NavigationFragment fragmentValue, boolean addToHistory) { navigateTo(fragmentValue.name(),addToHistory); } @Override - public void navigateTo(Enum fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory) + public void navigateTo(NavigationFragment fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory) { navigateTo(fragmentValue.name(), onCreateListener,addToHistory); } - + @Override public void navigateTo(String fragmentName, boolean addToHistory) { @@ -56,7 +72,23 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga //logManager.log(new NullPointerException("No navigation activity registered.")); return; } - + + boolean reverseAnimation = false; + + + if (currentFragmentName != null) + { + List<NavigationFragment> values = Arrays.asList(NavigationFragment.values()); + + int newIndex = values.indexOf(NavigationFragment.valueOf(fragmentName)); + int oldIndex = values.indexOf(NavigationFragment.valueOf(currentFragmentName)); + + if (oldIndex > newIndex) { + reverseAnimation = true; + } + } + + String originalName = fragmentName; fragmentName = basePackagePath + "." + fragmentName.toLowerCase() + "." + fragmentName + "Fragment"; FragmentManager fragmentManager = activity.getFragmentManager(); @@ -107,7 +139,14 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga if (!isFirst) { - fragmentTransaction.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_left, R.animator.slide_out_right, R.animator.slide_in_right); + if (!reverseAnimation) + { + fragmentTransaction.setCustomAnimations(R.animator.slide_out_right, R.animator.slide_in_right , R.animator.slide_in_left, R.animator.slide_out_left); + } + else + { + fragmentTransaction.setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_left, R.animator.slide_out_right, R.animator.slide_in_right); + } } isFirst = false; @@ -131,5 +170,39 @@ public class AndroidNavigationProvider extends ExtendedObject implements INaviga // } currentFragment = fragment; + currentFragmentName = originalName; + + NavigationFragment f = NavigationFragment.valueOf(originalName); + for (FragmentNavigatedListener listener : fragmentNavigatedListeners) + { + listener.onNavigated(f); + } + + } + + @Override + public void navigateTo(NavigationActivity activityValue, boolean addToHistory) + { + String name = activityValue.name(); + String activityName = basePackagePath + "." + name.toLowerCase() + "." + name + "Activity"; + try { + Class cls = Class.forName(activityName); + Intent intent = new Intent(context, cls); + + if (!addToHistory) { + intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); + } + + context.startActivity(intent); + + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + @Override + public void addFragmentNavigationListener(FragmentNavigatedListener listener) + { + fragmentNavigatedListeners.add(listener); } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java index a6567d576..60440d4e3 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/INavigationProvider.java @@ -10,14 +10,18 @@ import com.twine.colorcapture.core.IAction1; */ public interface INavigationProvider { + interface FragmentNavigatedListener + { + void onNavigated(NavigationFragment fragment); + } + /** * Register navigation activity. * * @param activity the activity * @param fragmentContainerId the fragment container id - * @param basePackagePath the base package path */ - void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId, String basePackagePath); + void registerNavigationActivity(AppCompatActivity activity, int fragmentContainerId); /** * Navigate to the specified fragment name. @@ -39,7 +43,7 @@ public interface INavigationProvider * * @param fragmentValue the fragment value */ - void navigateTo(Enum fragmentValue, boolean addToHistory); + void navigateTo(NavigationFragment fragmentValue, boolean addToHistory); /** * Navigate to to the specified enum value fragment name. @@ -47,5 +51,9 @@ public interface INavigationProvider * @param fragmentValue the fragment value * @param onCreateListener the on create listener */ - void navigateTo(Enum fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory); + void navigateTo(NavigationFragment fragmentValue, IAction1<FragmentBase> onCreateListener, boolean addToHistory); + + void navigateTo(NavigationActivity activityValue, boolean addToHistory); + + void addFragmentNavigationListener(FragmentNavigatedListener listener); } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationView.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java index d336d1930..b03f688bc 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationView.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationActivity.java @@ -1,8 +1,7 @@ package com.twine.colorcapture.navigation; -public enum NavigationView +public enum NavigationActivity { Loading, - Home, - Capture, + Main, } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java new file mode 100644 index 000000000..65a6d38e7 --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/navigation/NavigationFragment.java @@ -0,0 +1,7 @@ +package com.twine.colorcapture.navigation; + +public enum NavigationFragment +{ + MyColors, + Capture, +} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java index 87e5c56cd..f09e6448f 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/capture/CaptureFragment.java @@ -1,7 +1,9 @@ package com.twine.colorcapture.views.capture; +import android.Manifest; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; +import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.ImageFormat; import android.hardware.Camera; @@ -10,6 +12,9 @@ import android.hardware.Camera.Size; import android.os.Build; import android.os.Handler; import android.os.Looper; +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; @@ -23,6 +28,7 @@ import android.widget.ImageView; import com.twine.colorcapture.App; import com.twine.colorcapture.R; +import com.twine.colorcapture.core.IAction1; import com.twine.colorcapture.core.Task.TaskBuilder; import com.twine.colorcapture.databinding.FragmentCaptureBinding; import com.twine.colorcapture.mvvm.FragmentBase; @@ -46,6 +52,7 @@ public class CaptureFragment extends FragmentBase<FragmentCaptureBinding, Captur private Handler mHandler; private SurfaceView surfaceView; private ICaptureFragmentListener listener; + private IAction1<Boolean> cameraAccessAction; ObjectAnimator animator; View scannerLayout; View scannerBar; @@ -60,24 +67,30 @@ public class CaptureFragment extends FragmentBase<FragmentCaptureBinding, Captur protected void onCreated() { super.onCreated(); - - imagePreview = getView().findViewById(R.id.imagePreview); - imagewrappedPreview = getView().findViewById(R.id.imagePreviewWrapped); - - surfaceView = new SurfaceView(this.getActivity()); - - SurfaceHolder camHolder = surfaceView.getHolder(); - camHolder.addCallback(this); - camHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); - - FrameLayout surfraceFrame = (FrameLayout) getView().findViewById(R.id.surfaceViewFrame); - - startScanAnimation(); - - new Handler().postDelayed(() -> + + requestCameraAccess((granted) -> { - surfraceFrame.addView(surfaceView, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); - }, 500); + if (granted) + { + imagePreview = getView().findViewById(R.id.imagePreview); + imagewrappedPreview = getView().findViewById(R.id.imagePreviewWrapped); + + surfaceView = new SurfaceView(this.getActivity()); + + SurfaceHolder camHolder = surfaceView.getHolder(); + camHolder.addCallback(this); + camHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); + + FrameLayout surfraceFrame = (FrameLayout) getView().findViewById(R.id.surfaceViewFrame); + + startScanAnimation(); + + new Handler().postDelayed(() -> + { + surfraceFrame.addView(surfaceView, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); + }, 500); + } + }); } private void startScanAnimation() @@ -275,4 +288,45 @@ public class CaptureFragment extends FragmentBase<FragmentCaptureBinding, Captur imagePreview.setImageBitmap(frameBitmap); imagewrappedPreview.setImageBitmap(correctedBitmap); } + + public void requestCameraAccess(IAction1<Boolean> action) + { + cameraAccessAction = action; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) + { + if (ContextCompat.checkSelfPermission(this.getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) + { + ActivityCompat.requestPermissions(this.getActivity(), + new String[]{Manifest.permission.CAMERA}, + 1); + } + else + { + cameraAccessAction.invoke(true); + } + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) + { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + switch (requestCode) + { + case 1: + { + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) + { + cameraAccessAction.invoke(true); + } + else + { + cameraAccessAction.invoke(false); + } + } + } + } }
\ No newline at end of file diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java deleted file mode 100644 index 4dc05b81d..000000000 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragment.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.twine.colorcapture.views.home; - -import android.Manifest; -import android.content.pm.PackageManager; -import android.os.Build; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; - -import com.twine.colorcapture.App; -import com.twine.colorcapture.R; -import com.twine.colorcapture.core.IAction1; -import com.twine.colorcapture.databinding.FragmentHomeBinding; -import com.twine.colorcapture.mvvm.FragmentBase; - -public class HomeFragment extends FragmentBase<FragmentHomeBinding, HomeFragmentVM> implements IHomeFragment -{ - private IAction1<Boolean> cameraAccessAction; - - public HomeFragment() - { - // Required empty public constructor - } - - @Override - protected int getLayoutId() - { - return R.layout.fragment_home; - } - - @Override - protected void inject() - { - App.getComponent().inject(this); - } - - @Override - public String getTitle() - { - return "Home"; - } - - @Override - public void requestCameraAccess(IAction1<Boolean> action) - { - cameraAccessAction = action; - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) - { - if (ContextCompat.checkSelfPermission(this.getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) - { - ActivityCompat.requestPermissions(this.getActivity(), - new String[]{Manifest.permission.CAMERA}, - 1); - } - else - { - cameraAccessAction.invoke(true); - } - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) - { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - - switch (requestCode) - { - case 1: - { - if (grantResults.length > 0 - && grantResults[0] == PackageManager.PERMISSION_GRANTED) - { - cameraAccessAction.invoke(true); - } - else - { - cameraAccessAction.invoke(false); - } - } - } - } -} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java deleted file mode 100644 index d7b8e3ba7..000000000 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/HomeFragmentVM.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.twine.colorcapture.views.home; - -import com.twine.colorcapture.mvvm.RelayCommand; -import com.twine.colorcapture.mvvm.ViewModelBase; -import com.twine.colorcapture.navigation.INavigationProvider; -import com.twine.colorcapture.navigation.NavigationView; - -import javax.inject.Inject; - -public class HomeFragmentVM extends ViewModelBase<IHomeFragment> -{ - private INavigationProvider navigationProvider; - public RelayCommand startCaptureCommand; - - @Inject - public HomeFragmentVM(INavigationProvider navigationProvider) - { - this.navigationProvider = navigationProvider; - - startCaptureCommand = new RelayCommand(() -> - { - view.requestCameraAccess((granted) -> - { - if (granted) - { - this.navigationProvider.navigateTo(NavigationView.Capture, true); - } - }); - }); - } -} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java deleted file mode 100644 index 17f94c7db..000000000 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/home/IHomeFragment.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.twine.colorcapture.views.home; - -import com.twine.colorcapture.core.IAction; -import com.twine.colorcapture.core.IAction1; -import com.twine.colorcapture.mvvm.IView; - -public interface IHomeFragment extends IView -{ - void requestCameraAccess(IAction1<Boolean> action); -} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingActivity.java index b887f59e2..a9d7d44ce 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingFragment.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/ILoadingActivity.java @@ -2,6 +2,6 @@ package com.twine.colorcapture.views.loading; import com.twine.colorcapture.mvvm.IView; -public interface ILoadingFragment extends IView +public interface ILoadingActivity extends IView { } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivity.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivity.java new file mode 100644 index 000000000..1f14b0d0c --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingActivity.java @@ -0,0 +1,56 @@ +package com.twine.colorcapture.views.loading; + + +import android.app.Fragment; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.view.Window; +import android.view.WindowManager; + +import com.twine.colorcapture.App; +import com.twine.colorcapture.R; +import com.twine.colorcapture.databinding.ActivityLoadingBinding; +import com.twine.colorcapture.mvvm.ActivityBase; +import com.twine.colorcapture.navigation.INavigationProvider; +import com.twine.colorcapture.navigation.NavigationActivity; +import com.twine.colorcapture.views.main.MainActivity; + +import javax.inject.Inject; + +import io.reactivex.functions.Consumer; + +/** + * A simple {@link Fragment} subclass. + */ +public class LoadingActivity extends ActivityBase<ActivityLoadingBinding, LoadingActivityVM> implements ILoadingActivity +{ + @Inject + public INavigationProvider navigationProvider; + + @Override + protected void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + + new Handler().postDelayed(() -> + { +// Intent intent = new Intent(getApplicationContext(), MainActivity.class); +// intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); +// startActivity(intent); + + navigationProvider.navigateTo(NavigationActivity.Main,true); + + },5000); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_loading; + } + + @Override + protected void inject() { + App.getComponent().inject(this); + } +} 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/LoadingActivityVM.java index 39a93450e..fcf4aaac7 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/LoadingActivityVM.java @@ -1,24 +1,23 @@ package com.twine.colorcapture.views.loading; import android.os.CountDownTimer; -import android.os.Handler; import com.squareup.otto.Bus; import com.twine.colorcapture.mvvm.DependencyProperty; import com.twine.colorcapture.mvvm.ViewModelBase; import com.twine.colorcapture.navigation.INavigationProvider; -import com.twine.colorcapture.navigation.NavigationView; +import com.twine.colorcapture.navigation.NavigationFragment; import com.twine.colorcapture.notification.INotificationProvider; import javax.inject.Inject; -public class LoadingFragmentVM extends ViewModelBase<ILoadingFragment> +public class LoadingActivityVM extends ViewModelBase<ILoadingActivity> { private INavigationProvider navigationProvider; public DependencyProperty<Integer> loadingProgress; @Inject - public LoadingFragmentVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) + public LoadingActivityVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) { this.navigationProvider = navigationProvider; @@ -27,25 +26,25 @@ public class LoadingFragmentVM extends ViewModelBase<ILoadingFragment> } @Override - protected void onViewAttached(ILoadingFragment view) + protected void onViewAttached(ILoadingActivity view) { super.onViewAttached(view); - new CountDownTimer(5000,50) - { - - @Override - public void onTick(long l) { - - loadingProgress.set(loadingProgress.get() + 50); - } - - @Override - public void onFinish() { - - loadingProgress.set(2000); - navigationProvider.navigateTo(NavigationView.Capture, false); - } - }.start(); +// new CountDownTimer(5000,50) +// { +// +// @Override +// public void onTick(long l) { +// +// loadingProgress.set(loadingProgress.get() + 50); +// } +// +// @Override +// public void onFinish() { +// +// loadingProgress.set(2000); +// navigationProvider.navigateTo(NavigationFragment.MyColors, false); +// } +// }.start(); } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragment.java deleted file mode 100644 index 4a549b59b..000000000 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/loading/LoadingFragment.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.twine.colorcapture.views.loading; - - -import android.app.Fragment; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.twine.colorcapture.App; -import com.twine.colorcapture.R; -import com.twine.colorcapture.databinding.FragmentLoadingBinding; -import com.twine.colorcapture.mvvm.FragmentBase; - -import io.reactivex.functions.Consumer; - -/** - * A simple {@link Fragment} subclass. - */ -public class LoadingFragment extends FragmentBase<FragmentLoadingBinding, LoadingFragmentVM> implements ILoadingFragment -{ - - public LoadingFragment() - { - // Required empty public constructor - } - - @Override - protected int getLayoutId() - { - return R.layout.fragment_loading; - } - - @Override - protected void inject() - { - App.getComponent().inject(this); - } - - @Override - public String getTitle() - { - return "Loading"; - } -} 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 5ff99751f..61bf052b1 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 @@ -1,143 +1,78 @@ package com.twine.colorcapture.views.main; -import android.app.FragmentTransaction; -import android.graphics.Color; import android.os.Bundle; -import android.os.Handler; import android.support.v4.widget.DrawerLayout; import android.util.Log; import android.view.Gravity; import android.view.View; -import android.view.Window; -import android.view.WindowManager; -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.controls.ToggleImageButton; -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; -import com.twine.colorcapture.navigation.NavigationView; -import com.twine.onboarding.PaperOnboardingFragment; -import com.twine.onboarding.PaperOnboardingPage; - -import java.util.ArrayList; +import com.twine.colorcapture.navigation.NavigationFragment; import javax.inject.Inject; import butterknife.BindView; -import butterknife.ButterKnife; public class MainActivity extends ActivityBase<ActivityMainBinding, MainActivityVM> implements IMainActivity { - private boolean displayOnboarding = false; - + @Inject public INavigationProvider navigationProvider; - + @BindView(R.id.btnMenu) ToggleImageButton btnMenu; - + @BindView(R.id.header) LinearLayout frameHeader; - + @BindView(R.id.drawerLayout) DrawerLayout drawerLayout; - + // Used to load the 'native-lib' library on application startup. - static - { + static { System.loadLibrary("opencv_java3"); System.loadLibrary("native-lib"); } - + @Override protected void onCreate(Bundle savedInstanceState) { - Window window = getWindow(); - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryBackground)); - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - ButterKnife.bind(this); - - navigationProvider.registerNavigationActivity(this, R.id.fragment_container, "com.twine.colorcapture.views"); - - 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); - PaperOnboardingPage scr2 = new PaperOnboardingPage("Banks", - "We carefully verify all banks before add them into the app", - Color.parseColor("#65B0B4"), R.drawable.hand_phone, R.drawable.onboarding_pager_round_icon); - 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(this::showHeader,5000); - navigationProvider.navigateTo(NavigationView.Loading, false); - } - + + navigationProvider.registerNavigationActivity(this, R.id.fragment_container); + Log.d("TCC", "Registering event listener..."); - + btnMenu.setOnClickListener((x) -> { Log.d("TCC", "Clicked..."); drawerLayout.openDrawer(Gravity.START); }); + + navigationProvider.navigateTo(NavigationFragment.Capture, false); } - + @Override - protected int getLayoutId() - { + protected int getLayoutId() { return R.layout.activity_main; } - + @Override - protected void inject() - { + protected void inject() { App.getComponent().inject(this); } - - private void showHeader() - { + + private void showHeader() { frameHeader.setVisibility(View.VISIBLE); } - - private void hideHeader() - { + + private void hideHeader() { frameHeader.setVisibility(View.GONE); } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java index c07e59aaf..9410f4174 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/main/MainActivityVM.java @@ -2,46 +2,97 @@ package com.twine.colorcapture.views.main; import com.squareup.otto.Bus; import com.twine.colorcapture.mvvm.DependencyProperty; -import com.twine.colorcapture.mvvm.RelayCommand; import com.twine.colorcapture.mvvm.ViewModelBase; import com.twine.colorcapture.navigation.INavigationProvider; -import com.twine.colorcapture.navigation.NavigationView; +import com.twine.colorcapture.navigation.NavigationFragment; import com.twine.colorcapture.notification.INotificationProvider; import javax.inject.Inject; public class MainActivityVM extends ViewModelBase<IMainActivity> { + public enum CurrentTab + { + More, + Capture, + MyColors + } + private INavigationProvider navigationProvider; + private CurrentTab currentTab; public DependencyProperty<Boolean> isMoreToggled; public DependencyProperty<Boolean> isCaptureToggled; public DependencyProperty<Boolean> isMyColorsToggled; - + @Inject public MainActivityVM(Bus eventBus, INotificationProvider notificationProvider, INavigationProvider navigationProvider) { this.navigationProvider = navigationProvider; isMoreToggled = new DependencyProperty<Boolean>(false,this::onMoreToggled); - isCaptureToggled = new DependencyProperty<Boolean>(true,this::onCaptureToggled); + isCaptureToggled = new DependencyProperty<Boolean>(false,this::onCaptureToggled); isMyColorsToggled = new DependencyProperty<Boolean>(false,this::onMyColorsToggled); + currentTab = CurrentTab.Capture; + setCurrentTab(currentTab); + navigationProvider.addFragmentNavigationListener(this::onNavigation); + } + + private void onNavigation(NavigationFragment navigationFragment) + { + if (navigationFragment == NavigationFragment.Capture && currentTab != CurrentTab.Capture) + { + isMoreToggled.setNoCallback(false); + isMyColorsToggled.setNoCallback(false); + isCaptureToggled.setNoCallback(true); + } } private void onMyColorsToggled(DependencyProperty<Boolean> booleanDependencyProperty, Boolean value) { - isMoreToggled.set(false); - isCaptureToggled.set(false); + setCurrentTab(CurrentTab.MyColors); } private void onCaptureToggled(DependencyProperty<Boolean> booleanDependencyProperty, Boolean value) { - isMoreToggled.set(false); - isMyColorsToggled.set(false); + setCurrentTab(CurrentTab.Capture); } private void onMoreToggled(DependencyProperty<Boolean> booleanDependencyProperty, Boolean value) { - isCaptureToggled.set(false); - isMyColorsToggled.set(false); + setCurrentTab(CurrentTab.More); + } + + private void setCurrentTab(CurrentTab tab) + { + currentTab = tab; + + if (tab == CurrentTab.More) + { + if (isMoreToggled.get()) + { + isCaptureToggled.setNoCallback(false); + isMyColorsToggled.setNoCallback(false); + } + isMoreToggled.setNoCallback(true); + } + else if (tab == CurrentTab.Capture) + { + if (isCaptureToggled.get()) + { + isMoreToggled.setNoCallback(false); + isMyColorsToggled.setNoCallback(false); + navigationProvider.navigateTo(NavigationFragment.Capture,false); + } + isCaptureToggled.setNoCallback(true); + } + else if (tab == CurrentTab.MyColors) + { + if (isMyColorsToggled.get()) { + isMoreToggled.setNoCallback(false); + isCaptureToggled.setNoCallback(false); + navigationProvider.navigateTo(NavigationFragment.MyColors,false); + } + isMyColorsToggled.setNoCallback(true); + } } } diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/IMyColorsFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/IMyColorsFragment.java new file mode 100644 index 000000000..27f9c0419 --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/IMyColorsFragment.java @@ -0,0 +1,9 @@ +package com.twine.colorcapture.views.mycolors; + +import com.twine.colorcapture.core.IAction1; +import com.twine.colorcapture.mvvm.IView; + +public interface IMyColorsFragment extends IView +{ + +} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragment.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragment.java new file mode 100644 index 000000000..8df527308 --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragment.java @@ -0,0 +1,35 @@ +package com.twine.colorcapture.views.mycolors; + +import com.twine.colorcapture.App; +import com.twine.colorcapture.R; +import com.twine.colorcapture.core.IAction1; +import com.twine.colorcapture.mvvm.FragmentBase; +import com.twine.colorcapture.databinding.FragmentMycolorsBinding; + +public class MyColorsFragment extends FragmentBase<FragmentMycolorsBinding, MyColorsFragmentVM> implements IMyColorsFragment +{ + private IAction1<Boolean> cameraAccessAction; + + public MyColorsFragment() + { + // Required empty public constructor + } + + @Override + protected int getLayoutId() + { + return R.layout.fragment_mycolors; + } + + @Override + protected void inject() + { + App.getComponent().inject(this); + } + + @Override + public String getTitle() + { + return "MyColors"; + } +} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragmentVM.java b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragmentVM.java new file mode 100644 index 000000000..9a2358516 --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/java/com/twine/colorcapture/views/mycolors/MyColorsFragmentVM.java @@ -0,0 +1,17 @@ +package com.twine.colorcapture.views.mycolors; + +import com.twine.colorcapture.mvvm.ViewModelBase; +import com.twine.colorcapture.navigation.INavigationProvider; + +import javax.inject.Inject; + +public class MyColorsFragmentVM extends ViewModelBase<IMyColorsFragment> +{ + private INavigationProvider navigationProvider; + + @Inject + public MyColorsFragmentVM(INavigationProvider navigationProvider) + { + this.navigationProvider = navigationProvider; + } +} diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_in.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_in.xml new file mode 100644 index 000000000..d6b3668d3 --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_in.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:interpolator="@android:anim/decelerate_interpolator"> + <scale android:fromXScale="2.0" android:toXScale="1.0" + android:fromYScale="2.0" android:toYScale="1.0" + android:pivotX="50%p" android:pivotY="50%p" + android:duration="@android:integer/config_mediumAnimTime" /> +</set>
\ No newline at end of file diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_out.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_out.xml new file mode 100644 index 000000000..02008bb2a --- /dev/null +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/anim/zoom_out.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:interpolator="@android:anim/decelerate_interpolator" + android:zAdjustment="top"> + <scale android:fromXScale="1.0" android:toXScale=".5" + android:fromYScale="1.0" android:toYScale=".5" + android:pivotX="50%p" android:pivotY="50%p" + android:duration="@android:integer/config_mediumAnimTime" /> + <alpha android:fromAlpha="1.0" android:toAlpha="0" + android:duration="@android:integer/config_mediumAnimTime"/> +</set>
\ No newline at end of file diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_loading.xml index a301532a2..9fb6a6d0e 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_loading.xml +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/activity_loading.xml @@ -1,5 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> + <layout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:bind="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> @@ -7,7 +8,7 @@ <variable name="vm" - type="com.twine.colorcapture.views.loading.LoadingFragmentVM" /> + type="com.twine.colorcapture.views.loading.LoadingActivityVM" /> </data> <FrameLayout @@ -21,7 +22,7 @@ android:layoutDirection="ltr" android:paddingLeft="40dp" android:paddingRight="40dp" - tools:context="com.twine.colorcapture.views.loading.LoadingFragment"> + tools:context="com.twine.colorcapture.views.loading.LoadingActivity"> <!--<TextView--> 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 e650b8328..d2e2f89c1 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 @@ -44,7 +44,7 @@ android:background="@color/colorTransparent" bind:normalImage="@drawable/more_normal" bind:checkedImage="@drawable/more_selected" - bind:ccc="@={vm.isMoreToggled}"/> + bind:checked="@={vm.isMoreToggled}"/> <Space android:layout_width="0dp" @@ -60,7 +60,7 @@ android:background="@color/colorTransparent" bind:normalImage="@drawable/twinesnap_normal" bind:checkedImage="@drawable/twinesnap_selected" - bind:ccc="@={vm.isCaptureToggled}"/> + bind:checked="@={vm.isCaptureToggled}"/> <Space android:layout_width="0dp" @@ -77,7 +77,7 @@ android:background="@color/colorTransparent" bind:normalImage="@drawable/my_colors" bind:checkedImage="@drawable/selected" - bind:ccc="@={vm.isMyColorsToggled}" + bind:checked="@={vm.isMyColorsToggled}" /> </LinearLayout> diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_mycolors.xml index f62a2f6f2..edc10f2ce 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_home.xml +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/layout/fragment_mycolors.xml @@ -6,7 +6,7 @@ <data> <variable name="vm" - type="com.twine.colorcapture.views.home.HomeFragmentVM" /> + type="com.twine.colorcapture.views.mycolors.MyColorsFragmentVM" /> </data> <RelativeLayout @@ -15,7 +15,7 @@ android:layout_height="match_parent" android:paddingLeft="40dp" android:paddingRight="40dp" - tools:context="com.twine.colorcapture.views.home.HomeFragment"> + tools:context="com.twine.colorcapture.views.mycolors.MyColorsFragment"> <TextView @@ -24,19 +24,19 @@ android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" - android:text="Home View" + android:text="My Colors" android:textSize="30sp" - tools:text="Home View" /> + tools:text="My Colors" /> - <Button - android:id="@+id/btnStart" - android:layout_width="150dp" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_centerHorizontal="true" - android:layout_marginBottom="36dp" - android:text="Start" - bind:command="@{vm.startCaptureCommand}" /> + <!--<Button--> + <!--android:id="@+id/btnStart"--> + <!--android:layout_width="150dp"--> + <!--android:layout_height="wrap_content"--> + <!--android:layout_alignParentBottom="true"--> + <!--android:layout_centerHorizontal="true"--> + <!--android:layout_marginBottom="36dp"--> + <!--android:text="Start"--> + <!--bind:command="@{vm.startCaptureCommand}" />--> </RelativeLayout> </layout> diff --git a/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml b/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml index 1b6d287fa..10dfcc040 100644 --- a/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml +++ b/Software/Android_Studio/ColorCapture/app/src/main/res/values/styles.xml @@ -1,6 +1,16 @@ <resources> + <style name="WindowAnimationTransition"> + <item name="android:windowEnterAnimation">@android:anim/fade_in</item> + <item name="android:windowExitAnimation">@android:anim/fade_out</item> + </style> + <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> + + <!-- enable window content transitions --> + <!--<item name="android:windowActivityTransitions">true</item>--> + <!--<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>--> + <!-- Customize your theme here. --> <!--<item name="colorPrimary">@color/colorPrimary</item>--> <!--<item name="colorPrimaryDark">@color/colorPrimaryDark</item>--> |
