Skip to content

Commit 27ee6b3

Browse files
chizobagsantner
authored andcommitted
Advanced color picker (fixes gsantner#49) (gsantner#53)
1 parent c1da261 commit 27ee6b3

File tree

4 files changed

+88
-52
lines changed

4 files changed

+88
-52
lines changed

Diff for: app/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ dependencies {
7171
compile "com.android.support:recyclerview-v7:${version_lib.appcompat}"
7272

7373
// UI libraries
74-
compile 'com.github.DASAR:ShiftColorPicker:v0.5'
74+
compile 'com.jaredrummler:colorpicker:1.0.1'
7575

7676
// Tool libraries
7777
compile "com.jakewharton:butterknife:${version_lib.butterknife}"

Diff for: app/src/main/java/io/github/gsantner/memetastic/activity/MemeCreateActivity.java

+63-23
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import android.os.Bundle;
1414
import android.os.Handler;
1515
import android.provider.MediaStore;
16+
import android.support.annotation.ColorInt;
1617
import android.support.annotation.NonNull;
1718
import android.support.design.widget.FloatingActionButton;
1819
import android.support.design.widget.Snackbar;
@@ -22,6 +23,7 @@
2223
import android.text.StaticLayout;
2324
import android.text.TextPaint;
2425
import android.util.Base64;
26+
import android.util.Log;
2527
import android.view.Menu;
2628
import android.view.MenuItem;
2729
import android.view.View;
@@ -37,6 +39,9 @@
3739
import android.widget.Spinner;
3840
import android.widget.ToggleButton;
3941

42+
import com.jaredrummler.android.colorpicker.ColorPickerDialog;
43+
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener;
44+
4045
import java.io.File;
4146
import java.io.IOException;
4247
import java.lang.reflect.Method;
@@ -61,18 +66,18 @@
6166
import io.github.gsantner.memetastic.util.AppSettings;
6267
import io.github.gsantner.memetastic.util.ContextUtils;
6368
import io.github.gsantner.memetastic.util.PermissionChecker;
64-
import uz.shift.colorpicker.LineColorPicker;
6569

6670
/**
6771
* Activity for creating memes
6872
*/
69-
public class MemeCreateActivity extends AppCompatActivity {
73+
public class MemeCreateActivity extends AppCompatActivity implements ColorPickerDialogListener {
7074
//########################
7175
//## Static
7276
//########################
7377
public final static int RESULT_MEME_EDITING_FINISHED = 150;
7478
public final static String EXTRA_IMAGE_PATH = "MemeCreateActivity_EXTRA_IMAGE_PATH";
7579
public final static String EXTRA_MEMETASTIC_DATA = "MemeCreateActivity_EXTRA_MEMETASTIC_DATA";
80+
private static final String TAG = MemeCreateActivity.class.getSimpleName();
7681

7782
//########################
7883
//## UI Binding
@@ -92,6 +97,15 @@ public class MemeCreateActivity extends AppCompatActivity {
9297
@BindView(R.id.memecreate__activity__edit_caption_top)
9398
EditText _textEditTopCaption;
9499

100+
@BindView(R.id.memecreate__moar_controls__color_picker_for_text)
101+
io.github.gsantner.memetastic.ui.SquareImageView _textBackgroundColor;
102+
103+
@BindView(R.id.memecreate__moar_controls__color_picker_for_border)
104+
io.github.gsantner.memetastic.ui.SquareImageView _textBorderColor;
105+
106+
@BindView(R.id.memecreate__moar_controls__color_picker_for_padding)
107+
io.github.gsantner.memetastic.ui.SquareImageView _paddingColor;
108+
95109
//#####################
96110
//## Members
97111
//#####################
@@ -415,29 +429,25 @@ public void onFloatingButtonClicked(View view) {
415429
}
416430

417431
private void initMoarControlsContainer() {
418-
final LineColorPicker colorPickerShade = ButterKnife.findById(this, R.id.memecreate__moar_controls__color_picker_for_border);
419-
final LineColorPicker colorPickerText = ButterKnife.findById(this, R.id.memecreate__moar_controls__color_picker_for_text);
432+
final LinearLayout colorPickerTextBackground = ButterKnife.findById(this, R.id.text_background_color_picker);
433+
final LinearLayout colorPickerTextBorder = ButterKnife.findById(this, R.id.text_border_color_picker);
434+
final LinearLayout colorPickerPadding = ButterKnife.findById(this, R.id.padding_color_picker);
420435
final Spinner dropdownFont = ButterKnife.findById(this, R.id.memecreate__moar_controls__dropdown_font);
421436
final SeekBar seekFontSize = ButterKnife.findById(this, R.id.memecreate__moar_controls__seek_font_size);
422437
final ToggleButton toggleAllCaps = ButterKnife.findById(this, R.id.memecreate__moar_controls__toggle_all_caps);
423438
final Button rotateButton = ButterKnife.findById(this, R.id.memecreate__moar_controls__rotate_plus_90deg);
424-
final LineColorPicker colorPickerPadding = ButterKnife.findById(this, R.id.memecreate__moar_controls__color_picker_for_padding);
425439
final SeekBar seekPaddingSize = ButterKnife.findById(this, R.id.memecreate__moar_controls__seek_padding_size);
426440

427-
colorPickerText.setColors(MemeLibConfig.MEME_COLORS.ALL);
428-
colorPickerShade.setColors(MemeLibConfig.MEME_COLORS.ALL);
429-
colorPickerPadding.setColors(MemeLibConfig.MEME_COLORS.ALL);
430-
431441
FontAdapter adapter = new FontAdapter(this,
432442
android.R.layout.simple_list_item_1, MemeData.getFonts(),
433443
true, getString(R.string.creator__font));
434444
dropdownFont.setAdapter(adapter);
435445

436446

437447
// Apply existing settings
438-
colorPickerText.setSelectedColor(_memeEditorElements.getCaptionTop().getTextColor());
439-
colorPickerShade.setSelectedColor(_memeEditorElements.getCaptionTop().getBorderColor());
440-
colorPickerPadding.setSelectedColor(_memeEditorElements.getImageMain().getPaddingColor());
448+
_textBackgroundColor.setColorFilter(_memeEditorElements.getCaptionTop().getTextColor());
449+
_textBorderColor.setColorFilter(_memeEditorElements.getCaptionTop().getBorderColor());
450+
_paddingColor.setColorFilter(_memeEditorElements.getImageMain().getPaddingColor());
441451
adapter.setSelectedFont(dropdownFont, _memeEditorElements.getCaptionTop().getFont());
442452
toggleAllCaps.setChecked(_memeEditorElements.getCaptionTop().isAllCaps());
443453
seekFontSize.setProgress(_memeEditorElements.getCaptionTop().getFontSize() - MemeLibConfig.FONT_SIZES.MIN);
@@ -449,24 +459,22 @@ private void initMoarControlsContainer() {
449459
//
450460
View.OnClickListener colorListener = new View.OnClickListener() {
451461
public void onClick(View v) {
452-
LineColorPicker picker = (LineColorPicker) v;
453-
if (picker == colorPickerShade) {
454-
_memeEditorElements.getCaptionTop().setBorderColor(picker.getColor());
455-
_memeEditorElements.getCaptionBottom().setBorderColor(picker.getColor());
456-
} else if (picker == colorPickerText) {
457-
_memeEditorElements.getCaptionTop().setTextColor(picker.getColor());
458-
_memeEditorElements.getCaptionBottom().setTextColor(picker.getColor());
462+
LinearLayout picker = (LinearLayout) v;
463+
if (picker == colorPickerTextBorder) {
464+
ColorPickerDialog.newBuilder().setDialogId(R.id.memecreate__moar_controls__color_picker_for_border).setColor(_memeEditorElements.getCaptionTop().getBorderColor()).show(MemeCreateActivity.this);
465+
} else if (picker == colorPickerTextBackground) {
466+
ColorPickerDialog.newBuilder().setDialogId(R.id.memecreate__moar_controls__color_picker_for_text).setColor(_memeEditorElements.getCaptionTop().getTextColor()).show(MemeCreateActivity.this);
459467
} else if (picker == colorPickerPadding) {
460-
_memeEditorElements.getImageMain().setPaddingColor(picker.getColor());
461-
_memeEditorElements.getImageMain().setPaddingColor(picker.getColor());
468+
ColorPickerDialog.newBuilder().setDialogId(R.id.memecreate__moar_controls__color_picker_for_padding).setColor(_memeEditorElements.getImageMain().getPaddingColor()).show(MemeCreateActivity.this);
462469
}
463470
onMemeEditorObjectChanged();
464471
}
465472
};
466473

467-
colorPickerShade.setOnClickListener(colorListener);
468-
colorPickerText.setOnClickListener(colorListener);
474+
colorPickerTextBorder.setOnClickListener(colorListener);
475+
colorPickerTextBackground.setOnClickListener(colorListener);
469476
colorPickerPadding.setOnClickListener(colorListener);
477+
470478
dropdownFont.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
471479
public void onNothingSelected(AdapterView<?> parent) {
472480
}
@@ -513,6 +521,37 @@ public void onClick(View v) {
513521
});
514522
}
515523

524+
525+
@Override
526+
public void onColorSelected(int id, @ColorInt int i1) {
527+
switch (id) {
528+
case R.id.memecreate__moar_controls__color_picker_for_border: // border color
529+
_memeEditorElements.getCaptionTop().setBorderColor(i1);
530+
_memeEditorElements.getCaptionBottom().setBorderColor(i1);
531+
_textBorderColor.setColorFilter(i1);
532+
break;
533+
case R.id.memecreate__moar_controls__color_picker_for_text: // text background color
534+
_memeEditorElements.getCaptionTop().setTextColor(i1);
535+
_memeEditorElements.getCaptionBottom().setTextColor(i1);
536+
_textBackgroundColor.setColorFilter(i1);
537+
break;
538+
case R.id.memecreate__moar_controls__color_picker_for_padding: // padding color
539+
_memeEditorElements.getImageMain().setPaddingColor(i1);
540+
_memeEditorElements.getImageMain().setPaddingColor(i1);
541+
_paddingColor.setColorFilter(i1);
542+
break;
543+
default:
544+
Log.i(TAG, "Wrong selection");
545+
break;
546+
}
547+
onMemeEditorObjectChanged();
548+
549+
}
550+
551+
@Override
552+
public void onDialogDismissed(int id) {
553+
}
554+
516555
public Bitmap makeMemeImageFromElements(Context c, MemeEditorElements memeEditorElements) {
517556
// prepare canvas
518557
Bitmap bitmap = memeEditorElements.getImageMain().getDisplayImage();
@@ -621,4 +660,5 @@ public void onMemeEditorObjectChanged() {
621660
void onBottomContainerClicked() {
622661
toggleMoarControls(true, false);
623662
}
663+
624664
}

Diff for: app/src/main/res/layout/memecreate__moar_controls.xml

+24-28
Original file line numberDiff line numberDiff line change
@@ -51,34 +51,34 @@
5151
</LinearLayout>
5252

5353
<LinearLayout
54+
android:id="@+id/text_background_color_picker"
5455
android:layout_width="match_parent"
5556
android:layout_height="wrap_content"
5657
android:layout_marginTop="@dimen/default_margin_1"
5758
android:gravity="center_vertical"
58-
android:weightSum="100">
59+
android:weightSum="100"
60+
>
5961

6062

6163
<TextView
6264
style="@style/AppTheme.MemeCreatorCaptionText"
6365
android:layout_width="0dp"
6466
android:layout_height="wrap_content"
65-
android:layout_weight="30"
67+
android:layout_weight="80"
6668
android:text="@string/creator__background" />
6769

68-
<uz.shift.colorpicker.LineColorPicker
70+
<io.github.gsantner.memetastic.ui.SquareImageView
6971
android:id="@+id/memecreate__moar_controls__color_picker_for_text"
7072
android:layout_width="0dp"
7173
android:layout_height="40dp"
72-
android:layout_marginLeft="@dimen/default_margin_1"
73-
android:layout_marginStart="@dimen/default_margin_1"
74-
android:layout_weight="70"
75-
app:orientation="horizontal"
76-
app:selectedColorIndex="1"
77-
tools:background="@drawable/gradient_navbar" />
78-
74+
android:src="@android:color/darker_gray"
75+
android:layout_weight="15"
76+
android:layout_gravity="end"
77+
/>
7978
</LinearLayout>
8079

8180
<LinearLayout
81+
android:id="@+id/text_border_color_picker"
8282
android:layout_width="match_parent"
8383
android:layout_height="wrap_content"
8484
android:layout_marginTop="@dimen/default_margin_1"
@@ -90,20 +90,17 @@
9090
style="@style/AppTheme.MemeCreatorCaptionText"
9191
android:layout_width="0dp"
9292
android:layout_height="wrap_content"
93-
android:layout_weight="30"
93+
android:layout_weight="80"
9494
android:text="@string/creator__border" />
9595

96-
<uz.shift.colorpicker.LineColorPicker
96+
<io.github.gsantner.memetastic.ui.SquareImageView
9797
android:id="@+id/memecreate__moar_controls__color_picker_for_border"
9898
android:layout_width="0dp"
9999
android:layout_height="40dp"
100-
android:layout_marginLeft="@dimen/default_margin_1"
101-
android:layout_marginStart="@dimen/default_margin_1"
102-
android:layout_weight="70"
103-
app:orientation="horizontal"
104-
app:selectedColorIndex="0"
105-
tools:background="@drawable/gradient_navbar" />
106-
100+
android:src="@android:color/darker_gray"
101+
android:layout_weight="15"
102+
android:layout_gravity="end"
103+
/>
107104
</LinearLayout>
108105

109106
<LinearLayout
@@ -186,6 +183,7 @@
186183
</LinearLayout>
187184

188185
<LinearLayout
186+
android:id="@+id/padding_color_picker"
189187
android:layout_width="match_parent"
190188
android:layout_height="wrap_content"
191189
android:layout_marginTop="@dimen/default_margin_1"
@@ -196,19 +194,17 @@
196194
style="@style/AppTheme.MemeCreatorCaptionText"
197195
android:layout_width="0dp"
198196
android:layout_height="wrap_content"
199-
android:layout_weight="30"
197+
android:layout_weight="80"
200198
android:text="@string/creator__padding" />
201199

202-
<uz.shift.colorpicker.LineColorPicker
200+
<io.github.gsantner.memetastic.ui.SquareImageView
203201
android:id="@+id/memecreate__moar_controls__color_picker_for_padding"
204202
android:layout_width="0dp"
205-
android:layout_height="40dp"
206-
android:layout_marginLeft="@dimen/default_margin_1"
207-
android:layout_marginStart="@dimen/default_margin_1"
208-
android:layout_weight="70"
209-
app:orientation="horizontal"
210-
app:selectedColorIndex="1"
211-
tools:background="@drawable/gradient_navbar" />
203+
android:layout_height="20dp"
204+
android:src="@android:color/darker_gray"
205+
android:layout_weight="15"
206+
android:layout_gravity="end"
207+
/>
212208
</LinearLayout>
213209

214210
</LinearLayout>

Diff for: git

Whitespace-only changes.

0 commit comments

Comments
 (0)