From 7bac6a394a63fcdaa08692914c053d25c8218b71 Mon Sep 17 00:00:00 2001 From: Giovanni Harting Date: Thu, 15 Oct 2015 22:33:49 +0200 Subject: [PATCH] moved some stuff around avoid flicker of stripe when selected in app --- app/build.gradle | 4 +++ .../com/idlegandalf/ledd/ColorActivity.java | 24 +++++-------- .../ledd/components/LedStripe.java | 35 +++++++++++++++++++ 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 49f0398..ecd2328 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,6 +40,10 @@ android { compileSdkVersion 23 buildToolsVersion '23.0.1' + lintOptions { + abortOnError false + } + defaultConfig { applicationId "com.idlegandalf.ledd" minSdkVersion 17 diff --git a/app/src/main/java/com/idlegandalf/ledd/ColorActivity.java b/app/src/main/java/com/idlegandalf/ledd/ColorActivity.java index c36c445..002bf7b 100644 --- a/app/src/main/java/com/idlegandalf/ledd/ColorActivity.java +++ b/app/src/main/java/com/idlegandalf/ledd/ColorActivity.java @@ -79,8 +79,8 @@ public class ColorActivity extends AppCompatActivity implements NavigationView.O private refreshDaemonsListener daemonsListener; private List ledStripes; private LedStripe mCurrentStripe; - private LedDHelper mCurrentHelper; private boolean fromOnCreate = true; + private boolean autoColorSet = false; private double rate = 5.0; private double per = 100.0; private double allowance = rate; @@ -111,8 +111,8 @@ public class ColorActivity extends AppCompatActivity implements NavigationView.O colorPicker.setOnColorChangedListener(new ColorPicker.OnColorChangedListener() { @Override public void onColorChanged(int i) { - if (mCurrentStripe != null && mCurrentHelper != null && isRateAcceptable() && aSwitch.isChecked()) { - setStripeFromColor(i); + if (mCurrentStripe != null && isRateAcceptable() && aSwitch.isChecked() && !autoColorSet) { + mCurrentStripe.setColor(i); } } }); @@ -183,15 +183,14 @@ public class ColorActivity extends AppCompatActivity implements NavigationView.O @OnCheckedChanged(R.id.switch_onoff) public void onOffToggle(boolean checked) { - if (mCurrentStripe != null && mCurrentHelper != null) { + if (mCurrentStripe != null) { if (!checked) { HSV nHSV = mCurrentStripe.getColor(); nHSV.setValue(0.0); mCurrentStripe.setColor(nHSV); - mCurrentHelper.setColor(mCurrentStripe); //colorPicker.setColor(Color.HSVToColor(new float[]{(float) nHSV.getHue(), (float) nHSV.getSaturation(), (float) nHSV.getValue()})); } else { - setStripeFromColor(colorPicker.getColor()); + mCurrentStripe.setColor(colorPicker.getColor()); } } } @@ -342,11 +341,11 @@ public class ColorActivity extends AppCompatActivity implements NavigationView.O private void selectStripe(LedStripe stripe) { mCurrentStripe = stripe; - mCurrentHelper = ColorApplication.getInstance().getHelperForDaemon(stripe.getLedDDaemon()); mDrawerLayout.closeDrawer(Gravity.LEFT); toolbar.setTitle(stripe.getName()); - mCurrentHelper.getColor(mCurrentStripe, new RecieveColorCallback() { + autoColorSet = true; + mCurrentStripe.getColor(new RecieveColorCallback() { @Override public void onColorRecieved(LedStripe stripe) { final HSV cColor = stripe.getColor(); @@ -356,6 +355,8 @@ public class ColorActivity extends AppCompatActivity implements NavigationView.O @Override public void run() { colorPicker.setColor(color); + autoColorSet = false; + if (cColor.getValue() == 0.0) { aSwitch.setChecked(false); } else { @@ -394,13 +395,6 @@ public class ColorActivity extends AppCompatActivity implements NavigationView.O } } - private void setStripeFromColor(int color) { - float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); - mCurrentStripe.setColor(new HSV(hsv[0], hsv[1], hsv[2])); - mCurrentHelper.setColor(mCurrentStripe); - } - protected class refreshDaemonsListener extends BroadcastReceiver { @Override diff --git a/app/src/main/java/com/idlegandalf/ledd/components/LedStripe.java b/app/src/main/java/com/idlegandalf/ledd/components/LedStripe.java index 77e1c67..bab0666 100644 --- a/app/src/main/java/com/idlegandalf/ledd/components/LedStripe.java +++ b/app/src/main/java/com/idlegandalf/ledd/components/LedStripe.java @@ -18,6 +18,13 @@ package com.idlegandalf.ledd.components; +import android.graphics.Color; + +import com.idlegandalf.ledd.ColorApplication; +import com.idlegandalf.ledd.callbacks.RecieveColorCallback; +import com.idlegandalf.ledd.helper.LedDHelper; + +import hugo.weaving.DebugLog; import lombok.Getter; import lombok.Setter; @@ -34,6 +41,7 @@ public class LedStripe { boolean RGB; Controller controller; LedDDaemon ledDDaemon; + LedDHelper helper; public LedStripe() { this(-1, -1, -1, -1, ""); @@ -60,4 +68,31 @@ public class LedStripe { public String toString() { return String.format("%s<-%s@%s (r=%d;g=%d;b=%d)", name, controller.getAddress(), ledDDaemon, channelRed, channelGreen, channelBlue); } + + @DebugLog + public void setColor(int color) { + float[] hsv = new float[3]; + Color.colorToHSV(color, hsv); + setColor(new HSV(hsv[0], hsv[1], hsv[2])); + } + + public void setColor(HSV color) { + checkHelper(); + this.color = color; + + helper.setColor(this); + } + + private void checkHelper() { + if (helper == null) { + helper = ColorApplication.getInstance().getHelperForDaemon(ledDDaemon); + } + } + + @DebugLog + public void getColor(RecieveColorCallback callback) { + checkHelper(); + + helper.getColor(this, callback); + } } \ No newline at end of file