From 5b2c70c9291db91dc934d90ecdea44231a704ba3 Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Fri, 26 Sep 2014 17:15:23 +0800 Subject: [PATCH] Add top & left margins and alternate row sizes. --- res/layout/activity_settings.xml | 383 +++++++++++------- res/values/strings.xml | 5 +- .../activity/SettingsActivity.java | 102 ++++- .../android/gridwichterle/core/Config.java | 30 ++ .../android/gridwichterle/views/DrawView.java | 37 +- 5 files changed, 392 insertions(+), 165 deletions(-) diff --git a/res/layout/activity_settings.xml b/res/layout/activity_settings.xml index 2e6e07d..d9f6dfe 100644 --- a/res/layout/activity_settings.xml +++ b/res/layout/activity_settings.xml @@ -1,200 +1,297 @@ + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/background"> - + - + - + - + - + - + - + - + - + - + + + - + - + - + + + - + - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + - + - + - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index ac30b15..563ae72 100755 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -37,12 +37,15 @@ Set color This app will show grid overlay over whole system which helps you to verify your excellent app design. The code - %s dp + %s dp Send Feedback Why Wichterle? Otto Wichterle was a famous Czech inventor, best known for his invention of contact lenses. You can see more details with contact lenses, just like with this app. You won\'t miss any misaligned views in your app. Set grid size + Top Margin + Left Margin + Alternate Size diff --git a/src/eu/inmite/android/gridwichterle/activity/SettingsActivity.java b/src/eu/inmite/android/gridwichterle/activity/SettingsActivity.java index ca4beea..65d6115 100644 --- a/src/eu/inmite/android/gridwichterle/activity/SettingsActivity.java +++ b/src/eu/inmite/android/gridwichterle/activity/SettingsActivity.java @@ -8,8 +8,18 @@ import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.View; -import android.widget.*; +import android.widget.CheckedTextView; +import android.widget.CompoundButton; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.SeekBar; +import android.widget.Switch; +import android.widget.TextView; +import com.squareup.otto.Subscribe; + +import butterknife.InjectView; +import butterknife.Views; import eu.inmite.android.gridwichterle.R; import eu.inmite.android.gridwichterle.bus.BusProvider; import eu.inmite.android.gridwichterle.bus.CancelGridBus; @@ -21,10 +31,6 @@ import eu.inmite.android.gridwichterle.dialogs.ColorsDialog; import eu.inmite.android.gridwichterle.services.GridOverlayService; -import butterknife.InjectView; -import butterknife.Views; -import com.squareup.otto.Subscribe; - /** * Created with IntelliJ IDEA. * User: Michal Matl @@ -33,16 +39,33 @@ */ public class SettingsActivity extends FragmentActivity { - @InjectView(R.id.txtGridSize) - public TextView txtGridSize; @InjectView(R.id.txtVersion) public TextView txtVersion; @InjectView(R.id.txtSendFeedback) public TextView txtSendFeedback; @InjectView(R.id.txtTheCode) public LinearLayout txtTheCode; + + @InjectView(R.id.txtGridSize) + public TextView txtGridSize; @InjectView(R.id.seekBar) public SeekBar seekBar; + + @InjectView(R.id.txtGridAlternateSize) + public TextView txtGridAlternateSize; + @InjectView(R.id.alternateSeekBar) + public SeekBar alternateSeekBar; + + @InjectView(R.id.txtTopMargin) + public TextView txtTopMargin; + @InjectView(R.id.topMarginSeekBar) + public SeekBar topMarginSeekBar; + + @InjectView(R.id.txtLeftMargin) + public TextView txtLeftMargin; + @InjectView(R.id.leftMarginSeekBar) + public SeekBar leftMarginSeekBar; + @InjectView(R.id.layoutColor) public RelativeLayout layoutColor; @InjectView(R.id.viewColor) @@ -77,8 +100,8 @@ protected void onCreate(Bundle savedInstanceState) { private void setupViews() { - mConfig = (Config)getApplicationContext().getSystemService(Config.class.getName()); - final String seekBarString = getString(R.string.settings_seek_bar); + mConfig = (Config) getApplicationContext().getSystemService(Config.class.getName()); + final String seekBarString = getString(R.string.n_dp); chckFullScreen.setChecked(mConfig.isFullScreenModeActivated()); chckFullScreen.setOnClickListener(new View.OnClickListener() { @@ -131,12 +154,69 @@ public void onStartTrackingTouch(SeekBar seekBar) { @Override public void onStopTrackingTouch(SeekBar seekBar) { - mConfig.setGridSideSize(seekBar.getProgress() + 4); + mConfig.setGridSideSize(seekBar.getProgress()); applyNow(); } }); - seekBar.setProgress(mConfig.getGridSideSize()); + + alternateSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { + txtGridAlternateSize.setText(String.format(seekBarString, Integer.toString(progress))); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + mConfig.setAlternateGridSideSize(seekBar.getProgress()); + applyNow(); + } + }); + alternateSeekBar.setProgress(mConfig.getAlternateGridSideSize()); + + topMarginSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { + txtTopMargin.setText(String.format(seekBarString, Integer.toString(progress))); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + mConfig.setTopMargin(topMarginSeekBar.getProgress()); + applyNow(); + } + }); + topMarginSeekBar.setProgress(mConfig.getTopMargin()); + + leftMarginSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { + txtLeftMargin.setText(String.format(seekBarString, Integer.toString(progress))); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + mConfig.setLeftMargin(leftMarginSeekBar.getProgress()); + applyNow(); + } + }); + leftMarginSeekBar.setProgress(mConfig.getLeftMargin()); + txtGridSize.setText(String.format(seekBarString, Integer.toString(mConfig.getGridSideSize()))); layoutColor.setOnClickListener(new View.OnClickListener() { diff --git a/src/eu/inmite/android/gridwichterle/core/Config.java b/src/eu/inmite/android/gridwichterle/core/Config.java index ffb99af..7e56ec2 100644 --- a/src/eu/inmite/android/gridwichterle/core/Config.java +++ b/src/eu/inmite/android/gridwichterle/core/Config.java @@ -45,6 +45,36 @@ public int getGridSideSize() { return getPrefs().getInt("side_size", Constants.DEFAULT_SQUARE_SIDE); } + public void setAlternateGridSideSize(int side) { + getPrefs().edit() + .putInt("alternate_side_size", side) + .apply(); + } + + public int getAlternateGridSideSize() { + return getPrefs().getInt("alternate_side_size", Constants.DEFAULT_SQUARE_SIDE); + } + + public void setTopMargin(int topMargin) { + getPrefs().edit() + .putInt("top_margin", topMargin) + .apply(); + } + + public int getTopMargin() { + return getPrefs().getInt("top_margin", Constants.DEFAULT_SQUARE_SIDE); + } + + public void setLeftMargin(int leftMargin) { + getPrefs().edit() + .putInt("left_margin", leftMargin) + .apply(); + } + + public int getLeftMargin() { + return getPrefs().getInt("left_margin", Constants.DEFAULT_SQUARE_SIDE); + } + public void setColor(int color) { getPrefs().edit() .putInt("color", color) diff --git a/src/eu/inmite/android/gridwichterle/views/DrawView.java b/src/eu/inmite/android/gridwichterle/views/DrawView.java index e9573e8..13470dc 100755 --- a/src/eu/inmite/android/gridwichterle/views/DrawView.java +++ b/src/eu/inmite/android/gridwichterle/views/DrawView.java @@ -4,6 +4,7 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; + import eu.inmite.android.gridwichterle.core.Config; import eu.inmite.android.gridwichterle.core.Utils; @@ -21,7 +22,10 @@ public class DrawView extends View { private final Paint paint = new Paint(); private final int height; private final int width; + private final int mTopMargin; + private final int mLeftMargin; private final int mSquare; + private final int mSquareAlternate; private float[] points; public DrawView(Context context, int height, int width) { @@ -32,7 +36,10 @@ public DrawView(Context context, int height, int width) { Config config = (Config) getContext().getApplicationContext().getSystemService(Config.class.getName()); paint.setColor(config.getColor()); + mTopMargin = Utils.getPxFromDpi(getContext(), config.getTopMargin()); + mLeftMargin = Utils.getPxFromDpi(getContext(), config.getLeftMargin()); mSquare = Utils.getPxFromDpi(getContext(), config.getGridSideSize()); + mSquareAlternate = Utils.getPxFromDpi(getContext(), config.getAlternateGridSideSize()); } @Override @@ -41,30 +48,40 @@ protected void onSizeChanged(int w, int h, int oldw, int oldh) { List gridPoints = new LinkedList(); - int countHorizontalLines = height / mSquare; - int countVerticalLines = width / mSquare; - //prepare horizontal lines - float gap = mSquare; - for (int i = 0; i <= countHorizontalLines; i++) { + float gap = mTopMargin; + for (int i = 0; ; i++) { gridPoints.add(0f); gridPoints.add(gap); gridPoints.add((float) width); gridPoints.add(gap); - gap = gap + mSquare; - + if (i % 2 == 0) { + gap = gap + mSquare; + } else { + gap = gap + mSquareAlternate; + } + if (gap > height) { + break; + } } //prepare vertical lines - gap = mSquare; - for (int i = 0; i <= countVerticalLines; i++) { + gap = mLeftMargin; + for (int i = 0; ; i++) { gridPoints.add(gap); gridPoints.add(0f); gridPoints.add(gap); gridPoints.add((float) height); - gap = gap + mSquare; + if (i % 2 == 0) { + gap = gap + mSquare; + } else { + gap = gap + mSquareAlternate; + } + if (gap > width) { + break; + } } points = new float[gridPoints.size()];