From 144b0534b84456ede8c6d09595f5713fcd364fb2 Mon Sep 17 00:00:00 2001 From: Renan Cadaval Date: Thu, 19 Nov 2015 21:47:16 -0200 Subject: [PATCH 1/3] Trying to avoid oom on low memory devices --- .../java/org/robovm/store/util/Images.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/org/robovm/store/util/Images.java b/android/src/main/java/org/robovm/store/util/Images.java index 5178889..889bf28 100644 --- a/android/src/main/java/org/robovm/store/util/Images.java +++ b/android/src/main/java/org/robovm/store/util/Images.java @@ -77,13 +77,43 @@ public static void fromUrl(String url, Action completion) { } private static Bitmap saveBitmap(String url, File imagePath) { - Bitmap bmp = BitmapFactory.decodeFile(imagePath.getAbsolutePath()); + final BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(imagePath.getAbsolutePath(), options); + + options.inSampleSize = calculateInSampleSize(options, (int) SCREEN_WIDTH, (int) SCREEN_WIDTH); + options.inJustDecodeBounds = false; + Bitmap bmp = BitmapFactory.decodeFile(imagePath.getAbsolutePath(), options); + if (bmp != null) { bmpCache.put(url, bmp); } return bmp; } + public static int calculateInSampleSize( + BitmapFactory.Options options, int reqWidth, int reqHeight) { + // Raw height and width of image + final int height = options.outHeight; + final int width = options.outWidth; + int inSampleSize = 1; + + if (height > reqHeight || width > reqWidth) { + + final int halfHeight = height / 2; + final int halfWidth = width / 2; + + // Calculate the largest inSampleSize value that is a power of 2 and keeps both + // height and width larger than the requested height and width. + while ((halfHeight / inSampleSize) > reqHeight + && (halfWidth / inSampleSize) > reqWidth) { + inSampleSize *= 2; + } + } + + return inSampleSize; + } + public static void setScreenWidth(float screenWidth) { SCREEN_WIDTH = screenWidth; } From 9e2dc613ef3dfe68f2c7dddd620ba6f510ac015c Mon Sep 17 00:00:00 2001 From: Renan Cadaval Date: Fri, 20 Nov 2015 12:05:19 -0200 Subject: [PATCH 2/3] Add some material design elements --- android/build.gradle | 3 +- .../org/robovm/store/StoreAppActivity.java | 72 +++++++----- .../store/fragments/BasketFragment.java | 12 +- .../robovm/store/fragments/BragFragment.java | 3 +- .../robovm/store/fragments/LoginFragment.java | 12 +- .../fragments/ProductDetailsFragment.java | 105 +++++++++++------- .../store/fragments/ProductListFragment.java | 16 ++- .../fragments/ShippingDetailsFragment.java | 65 ++++++----- .../src/main/res/anim/add_to_basket_in.xml | 10 +- android/src/main/res/anim/basket_in.xml | 30 ++--- android/src/main/res/anim/enter.xml | 11 +- android/src/main/res/anim/exit.xml | 11 +- .../src/main/res/anim/product_detail_in.xml | 20 ++-- .../src/main/res/anim/product_detail_out.xml | 11 +- .../src/main/res/drawable/ab_background.xml | 6 - android/src/main/res/layout/main.xml | 23 +++- android/src/main/res/menu/menu.xml | 12 +- android/src/main/res/values/colors.xml | 24 +++- android/src/main/res/values/themes.xml | 31 +----- build.gradle | 1 + versions.json | 7 +- 21 files changed, 266 insertions(+), 219 deletions(-) delete mode 100755 android/src/main/res/drawable/ab_background.xml diff --git a/android/build.gradle b/android/build.gradle index 6bf3d03..991c029 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -49,6 +49,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23+' + compile 'com.android.support:appcompat-v7:' + androidSupportLibVersion + compile 'com.android.support:design:' + androidSupportLibVersion compile project(':core') } diff --git a/android/src/main/java/org/robovm/store/StoreAppActivity.java b/android/src/main/java/org/robovm/store/StoreAppActivity.java index 533bb06..85a6ecc 100644 --- a/android/src/main/java/org/robovm/store/StoreAppActivity.java +++ b/android/src/main/java/org/robovm/store/StoreAppActivity.java @@ -16,23 +16,31 @@ package org.robovm.store; -import android.app.Activity; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.util.DisplayMetrics; import android.view.MenuItem; + import org.robovm.store.api.RoboVMWebService; import org.robovm.store.api.RoboVMWebService.ActionWrapper; -import org.robovm.store.fragments.*; +import org.robovm.store.fragments.BasketFragment; +import org.robovm.store.fragments.BragFragment; +import org.robovm.store.fragments.LoginFragment; +import org.robovm.store.fragments.ProductDetailsFragment; +import org.robovm.store.fragments.ProductListFragment; +import org.robovm.store.fragments.ShippingDetailsFragment; import org.robovm.store.model.Product; import org.robovm.store.util.Action; import org.robovm.store.util.ImageCache; import org.robovm.store.util.Images; -public class StoreAppActivity extends Activity { +public class StoreAppActivity extends AppCompatActivity { private int baseFragment; + private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { @@ -52,6 +60,8 @@ public void invoke(Action action, T result) { }; setContentView(R.layout.main); + toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); // Retain fragments so don't set home if state is stored. if (getFragmentManager().getBackStackEntryCount() == 0) { @@ -76,25 +86,25 @@ protected void onRestoreInstanceState(Bundle savedInstanceState) { } @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { + public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case R.id.cart_menu_item: - showBasket(); - return true; - case android.R.id.home: - // pop full backstack when going home. - getFragmentManager().popBackStack(baseFragment, FragmentManager.POP_BACK_STACK_INCLUSIVE); - setupActionBar(); - return true; + case R.id.cart_menu_item: + showBasket(); + return true; + case android.R.id.home: + // pop full backstack when going home. + getFragmentManager().popBackStack(baseFragment, FragmentManager.POP_BACK_STACK_INCLUSIVE); + setupActionBar(); + return true; } - return super.onMenuItemSelected(featureId, item); + return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { super.onBackPressed(); - setupActionBar(getFragmentManager().getBackStackEntryCount() != 0); + setupActionBar(getSupportFragmentManager().getBackStackEntryCount() != 0); } public int switchScreens(Fragment fragment) { @@ -102,7 +112,7 @@ public int switchScreens(Fragment fragment) { } public int switchScreens(Fragment fragment, boolean animated, boolean isRoot) { - FragmentTransaction transaction = getFragmentManager().beginTransaction(); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); if (animated) { transaction.setCustomAnimations(getInAnimationForFragment(fragment), getOutAnimationForFragment(fragment)); @@ -121,12 +131,12 @@ private int getInAnimationForFragment(Fragment fragment) { int animIn = R.anim.enter; switch (fragment.getClass().getSimpleName()) { - case "ProductDetailsFragment": - animIn = R.anim.product_detail_in; - break; - case "BasketFragment": - animIn = R.anim.basket_in; - break; + case "ProductDetailsFragment": + animIn = R.anim.product_detail_in; + break; + case "BasketFragment": + animIn = R.anim.basket_in; + break; } return animIn; } @@ -135,11 +145,11 @@ private int getOutAnimationForFragment(Fragment fragment) { int animOut = R.anim.exit; switch (fragment.getClass().getSimpleName()) { - case "ProductDetailsFragment": - animOut = R.anim.product_detail_out; - break; - case "BasketFragment": - break; + case "ProductDetailsFragment": + animOut = R.anim.product_detail_out; + break; + case "BasketFragment": + break; } return animOut; } @@ -148,6 +158,7 @@ public void showProductDetail(Product product, int itemVerticalOffset) { ProductDetailsFragment productDetails = new ProductDetailsFragment(product, itemVerticalOffset); productDetails.setAddToBasketListener((order) -> { RoboVMWebService.getInstance().getBasket().add(order); + onBackPressed(); setupActionBar(); }); switchScreens(productDetails); @@ -158,7 +169,8 @@ public void setupActionBar() { } public void setupActionBar(boolean showUp) { - getActionBar().setDisplayHomeAsUpEnabled(showUp); + getSupportActionBar().setDisplayHomeAsUpEnabled(showUp); + toolbar.setNavigationOnClickListener(v -> onBackPressed()); } public void showBasket() { diff --git a/android/src/main/java/org/robovm/store/fragments/BasketFragment.java b/android/src/main/java/org/robovm/store/fragments/BasketFragment.java index 6998724..d3cc82a 100644 --- a/android/src/main/java/org/robovm/store/fragments/BasketFragment.java +++ b/android/src/main/java/org/robovm/store/fragments/BasketFragment.java @@ -16,13 +16,18 @@ package org.robovm.store.fragments; -import android.app.ListFragment; import android.content.Context; import android.os.Bundle; +import android.support.v4.app.ListFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.*; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; + import org.robovm.store.R; import org.robovm.store.api.RoboVMWebService; import org.robovm.store.model.Basket; @@ -37,7 +42,8 @@ public class BasketFragment extends ListFragment { private Runnable checkoutListener; - public BasketFragment() {} + public BasketFragment() { + } public BasketFragment(Basket basket) { this.basket = basket; diff --git a/android/src/main/java/org/robovm/store/fragments/BragFragment.java b/android/src/main/java/org/robovm/store/fragments/BragFragment.java index fdb2c26..f33f4d1 100644 --- a/android/src/main/java/org/robovm/store/fragments/BragFragment.java +++ b/android/src/main/java/org/robovm/store/fragments/BragFragment.java @@ -16,13 +16,14 @@ package org.robovm.store.fragments; -import android.app.Fragment; import android.content.Intent; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; + import org.robovm.store.R; public class BragFragment extends Fragment { diff --git a/android/src/main/java/org/robovm/store/fragments/LoginFragment.java b/android/src/main/java/org/robovm/store/fragments/LoginFragment.java index b6c50d8..ca6e68a 100644 --- a/android/src/main/java/org/robovm/store/fragments/LoginFragment.java +++ b/android/src/main/java/org/robovm/store/fragments/LoginFragment.java @@ -16,18 +16,23 @@ package org.robovm.store.fragments; -import android.app.Fragment; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.text.Html; import android.text.Spanned; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.*; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + import org.robovm.store.R; import org.robovm.store.api.RoboVMWebService; import org.robovm.store.util.Gravatar; @@ -45,7 +50,8 @@ public class LoginFragment extends Fragment { private Button login; private ImageView imageView; - public LoginFragment() {} + public LoginFragment() { + } @Override public void onCreate(Bundle savedInstanceState) { diff --git a/android/src/main/java/org/robovm/store/fragments/ProductDetailsFragment.java b/android/src/main/java/org/robovm/store/fragments/ProductDetailsFragment.java index 4f38df1..e629a72 100644 --- a/android/src/main/java/org/robovm/store/fragments/ProductDetailsFragment.java +++ b/android/src/main/java/org/robovm/store/fragments/ProductDetailsFragment.java @@ -17,20 +17,40 @@ package org.robovm.store.fragments; import android.animation.Animator; -import android.animation.AnimatorInflater; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.app.Activity; -import android.app.Fragment; import android.graphics.Bitmap; import android.graphics.Matrix; import android.os.Bundle; -import android.view.*; -import android.widget.*; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.Spinner; +import android.widget.TextView; + import org.robovm.store.R; import org.robovm.store.api.RoboVMWebService; -import org.robovm.store.model.*; -import org.robovm.store.util.*; +import org.robovm.store.model.Basket; +import org.robovm.store.model.Order; +import org.robovm.store.model.Product; +import org.robovm.store.model.ProductColor; +import org.robovm.store.model.ProductSize; +import org.robovm.store.util.Action; +import org.robovm.store.util.Colors; +import org.robovm.store.util.ImageCache; +import org.robovm.store.util.Images; +import org.robovm.store.util.MatrixEvaluator; import org.robovm.store.views.BadgeDrawable; import org.robovm.store.views.KenBurnsDrawable; import org.robovm.store.views.SlidingLayout; @@ -64,7 +84,8 @@ public class ProductDetailsFragment extends Fragment implements ViewTreeObserver private ValueAnimator kenBurnsMovement; private ValueAnimator kenBurnsAlpha; - public ProductDetailsFragment() {} + public ProductDetailsFragment() { + } public ProductDetailsFragment(Product product, int slidingDelta) { this.currentProduct = product; @@ -159,11 +180,11 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { } @Override - public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) { + public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) { if (!enter && shouldAnimatePop) { - return AnimatorInflater.loadAnimator(getView().getContext(), R.anim.add_to_basket_in); + return AnimationUtils.loadAnimation(getView().getContext(), R.anim.add_to_basket_in); } - return super.onCreateAnimator(transit, enter, nextAnim); + return super.onCreateAnimation(transit, enter, nextAnim); } private void animateImages() { @@ -269,32 +290,32 @@ public void onGlobalLayout() { float rotation = random.nextInt(9) / 100f; switch (random.nextInt(3)) { - case 0: - zoomInX = 1.25f; - zoomInY = 1.25f; - moveX = -maxMoveX; - moveY = -maxMoveY; - break; - case 1: - zoomInX = 1.1f; - zoomInY = 1.1f; - moveX = -maxMoveX; - moveY = maxMoveY; - originY = -moveY * zoomInY * 1.1f; - break; - case 2: - zoomInX = 1.2f; - zoomInY = 1.2f; - moveX = 0; - moveY = -maxMoveY; - break; - default: - zoomInX = 1.2f; - zoomInY = 1.2f; - moveX = 0; - moveY = maxMoveY; - originY = -moveY * zoomInY * 1.1f; - break; + case 0: + zoomInX = 1.25f; + zoomInY = 1.25f; + moveX = -maxMoveX; + moveY = -maxMoveY; + break; + case 1: + zoomInX = 1.1f; + zoomInY = 1.1f; + moveX = -maxMoveX; + moveY = maxMoveY; + originY = -moveY * zoomInY * 1.1f; + break; + case 2: + zoomInX = 1.2f; + zoomInY = 1.2f; + moveX = 0; + moveY = -maxMoveY; + break; + default: + zoomInX = 1.2f; + zoomInY = 1.2f; + moveX = 0; + moveY = maxMoveY; + originY = -moveY * zoomInY * 1.1f; + break; } MatrixEvaluator evaluator = new MatrixEvaluator(); @@ -324,13 +345,16 @@ public void onGlobalLayout() { kenBurnsAlpha.setRepeatCount(ValueAnimator.INFINITE); kenBurnsAlpha.addListener(new Animator.AnimatorListener() { @Override - public void onAnimationStart(Animator animation) {} + public void onAnimationStart(Animator animation) { + } @Override - public void onAnimationEnd(Animator animation) {} + public void onAnimationEnd(Animator animation) { + } @Override - public void onAnimationCancel(Animator animation) {} + public void onAnimationCancel(Animator animation) { + } @Override public void onAnimationRepeat(Animator animation) { @@ -360,7 +384,8 @@ private void precacheNextImage() { } int next = currentIndex + 1; String image = images.get(next); - ImageCache.getInstance().downloadImage(image, (f) -> {}); + ImageCache.getInstance().downloadImage(image, (f) -> { + }); } public void setAddToBasketListener(Action listener) { diff --git a/android/src/main/java/org/robovm/store/fragments/ProductListFragment.java b/android/src/main/java/org/robovm/store/fragments/ProductListFragment.java index 8aa6fc8..996675a 100644 --- a/android/src/main/java/org/robovm/store/fragments/ProductListFragment.java +++ b/android/src/main/java/org/robovm/store/fragments/ProductListFragment.java @@ -16,14 +16,24 @@ package org.robovm.store.fragments; -import android.app.ListFragment; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.view.*; +import android.support.v4.app.ListFragment; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; import android.view.animation.DecelerateInterpolator; -import android.widget.*; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.TextView; + import org.robovm.store.R; import org.robovm.store.api.RoboVMWebService; import org.robovm.store.model.Basket; diff --git a/android/src/main/java/org/robovm/store/fragments/ShippingDetailsFragment.java b/android/src/main/java/org/robovm/store/fragments/ShippingDetailsFragment.java index 436f42d..443d41a 100644 --- a/android/src/main/java/org/robovm/store/fragments/ShippingDetailsFragment.java +++ b/android/src/main/java/org/robovm/store/fragments/ShippingDetailsFragment.java @@ -16,13 +16,19 @@ package org.robovm.store.fragments; -import android.app.Fragment; import android.app.ProgressDialog; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.*; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + import org.robovm.store.R; import org.robovm.store.api.RoboVMWebService; import org.robovm.store.api.ValidationError; @@ -102,7 +108,8 @@ public void onItemSelected(AdapterView parent, View view, int position, long } @Override - public void onNothingSelected(AdapterView parent) {} + public void onNothingSelected(AdapterView parent) { + } }); placeOrder.setOnClickListener((b) -> placeOrder()); @@ -131,8 +138,8 @@ private void loadStates() { } private void placeOrder() { - EditText[] entries = new EditText[] { phoneNumberField, address1Field, address2Field, cityField, stateField, - zipCodeField, countryField }; + EditText[] entries = new EditText[]{phoneNumberField, address1Field, address2Field, cityField, stateField, + zipCodeField, countryField}; for (EditText entry : entries) { entry.setEnabled(false); } @@ -180,30 +187,30 @@ private void placeOrder() { alertMessage = message; } else { switch (field) { - case "firstName": - alertMessage = "First name is required"; - break; - case "lastName": - alertMessage = "Last name is required"; - break; - case "address1": - alertMessage = "Address is required"; - break; - case "city": - alertMessage = "City is required"; - break; - case "zipCode": - alertMessage = "ZIP code is required"; - break; - case "phone": - alertMessage = "Phone number is required"; - break; - case "country": - alertMessage = "Country is required"; - break; - default: - alertMessage = message; - break; + case "firstName": + alertMessage = "First name is required"; + break; + case "lastName": + alertMessage = "Last name is required"; + break; + case "address1": + alertMessage = "Address is required"; + break; + case "city": + alertMessage = "City is required"; + break; + case "zipCode": + alertMessage = "ZIP code is required"; + break; + case "phone": + alertMessage = "Phone number is required"; + break; + case "country": + alertMessage = "Country is required"; + break; + default: + alertMessage = message; + break; } } } diff --git a/android/src/main/res/anim/add_to_basket_in.xml b/android/src/main/res/anim/add_to_basket_in.xml index 7f48fc2..b59c2be 100755 --- a/android/src/main/res/anim/add_to_basket_in.xml +++ b/android/src/main/res/anim/add_to_basket_in.xml @@ -1,9 +1,7 @@ - + \ No newline at end of file diff --git a/android/src/main/res/anim/basket_in.xml b/android/src/main/res/anim/basket_in.xml index 05577b4..19434bb 100755 --- a/android/src/main/res/anim/basket_in.xml +++ b/android/src/main/res/anim/basket_in.xml @@ -1,21 +1,15 @@ - - - + + + \ No newline at end of file diff --git a/android/src/main/res/anim/enter.xml b/android/src/main/res/anim/enter.xml index ac10566..427bd8c 100755 --- a/android/src/main/res/anim/enter.xml +++ b/android/src/main/res/anim/enter.xml @@ -1,9 +1,6 @@ - - + + \ No newline at end of file diff --git a/android/src/main/res/anim/exit.xml b/android/src/main/res/anim/exit.xml index 3de5f69..8c35bfa 100755 --- a/android/src/main/res/anim/exit.xml +++ b/android/src/main/res/anim/exit.xml @@ -1,9 +1,6 @@ - - + + \ No newline at end of file diff --git a/android/src/main/res/anim/product_detail_in.xml b/android/src/main/res/anim/product_detail_in.xml index 4f5835b..16de2aa 100755 --- a/android/src/main/res/anim/product_detail_in.xml +++ b/android/src/main/res/anim/product_detail_in.xml @@ -1,15 +1,11 @@ - - + + \ No newline at end of file diff --git a/android/src/main/res/anim/product_detail_out.xml b/android/src/main/res/anim/product_detail_out.xml index e82ac85..c1fa3dc 100755 --- a/android/src/main/res/anim/product_detail_out.xml +++ b/android/src/main/res/anim/product_detail_out.xml @@ -1,9 +1,8 @@ - + + \ No newline at end of file diff --git a/android/src/main/res/drawable/ab_background.xml b/android/src/main/res/drawable/ab_background.xml deleted file mode 100755 index 20c919f..0000000 --- a/android/src/main/res/drawable/ab_background.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/android/src/main/res/layout/main.xml b/android/src/main/res/layout/main.xml index d2a1343..fe3d23a 100755 --- a/android/src/main/res/layout/main.xml +++ b/android/src/main/res/layout/main.xml @@ -1,7 +1,18 @@ - + + + + + + \ No newline at end of file diff --git a/android/src/main/res/menu/menu.xml b/android/src/main/res/menu/menu.xml index 8e1b79b..d9ca09f 100755 --- a/android/src/main/res/menu/menu.xml +++ b/android/src/main/res/menu/menu.xml @@ -1,7 +1,9 @@  - - + + \ No newline at end of file diff --git a/android/src/main/res/values/colors.xml b/android/src/main/res/values/colors.xml index eb712b4..d8f2e1e 100755 --- a/android/src/main/res/values/colors.xml +++ b/android/src/main/res/values/colors.xml @@ -1,9 +1,21 @@ - #B455B6 - #00AEEF - #2C3E50 - #93C624 - #444444 - #666666 + #B455B6 + #00AEEF + #2C3E50 + #93C624 + #444444 + #666666 + + + #eeeeee + @android:color/white + @color/robo_green + #47A035 + #11B4D3 + #30000000 + #20000000 + + @color/robo_green + @color/primary_dark diff --git a/android/src/main/res/values/themes.xml b/android/src/main/res/values/themes.xml index c057246..55afe6e 100755 --- a/android/src/main/res/values/themes.xml +++ b/android/src/main/res/values/themes.xml @@ -3,34 +3,11 @@ 2dp - - #eeeeee - @android:color/white - #93C624 - #30000000 - #20000000 - - @color/robo_green - #47A035 - - - - - -