Improve color picker layout / cleaned up some of the code
- Fixed possible NPE with calling getWindow() - Remove unnecessary panel of preset colors underneath the color picker - Changed dialog to AlertDialog to match LED color picker While this doesn't look EXACTLY like the LED color picker, this along with the commit below bring it closer than ever before. http://gerrit.dirtyunicorns.com/#/c/1199/ Change-Id: I13bc40d1882676d92e5c4ae4bfcf25865e88dad1 Signed-off-by: xyyx <xyyx@mail.ru>
This commit is contained in:
@@ -17,11 +17,11 @@
|
||||
|
||||
package net.margaritov.preference.colorpicker;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
@@ -31,46 +31,31 @@ import android.widget.LinearLayout;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
public class ColorPickerDialog
|
||||
extends
|
||||
Dialog
|
||||
implements
|
||||
ColorPickerView.OnColorChangedListener,
|
||||
View.OnClickListener {
|
||||
public class ColorPickerDialog extends AlertDialog implements ColorPickerView.OnColorChangedListener, View.OnClickListener {
|
||||
|
||||
private ColorPickerView mColorPicker;
|
||||
|
||||
private ColorPickerPanelView mOldColor;
|
||||
private ColorPickerPanelView mNewColor;
|
||||
|
||||
private ColorPickerPanelView mWhite;
|
||||
private ColorPickerPanelView mBlack;
|
||||
private ColorPickerPanelView mCyan;
|
||||
private ColorPickerPanelView mRed;
|
||||
private ColorPickerPanelView mGreen;
|
||||
private ColorPickerPanelView mYellow;
|
||||
|
||||
private EditText mHex;
|
||||
private ImageButton mSetButton;
|
||||
|
||||
private OnColorChangedListener mListener;
|
||||
|
||||
public interface OnColorChangedListener {
|
||||
public void onColorChanged(int color);
|
||||
void onColorChanged(int color);
|
||||
}
|
||||
|
||||
public ColorPickerDialog(Context context, int initialColor) {
|
||||
ColorPickerDialog(Context context, int initialColor) {
|
||||
super(context);
|
||||
|
||||
init(initialColor);
|
||||
}
|
||||
|
||||
private void init(int color) {
|
||||
// To fight color branding.
|
||||
getWindow().setFormat(PixelFormat.RGBA_8888);
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
setUp(color);
|
||||
|
||||
if (getWindow() != null) {
|
||||
getWindow().setFormat(PixelFormat.RGBA_8888);
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
setUp(color);
|
||||
}
|
||||
}
|
||||
|
||||
private void setUp(int color) {
|
||||
@@ -78,32 +63,18 @@ public class ColorPickerDialog
|
||||
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
|
||||
Context.LAYOUT_INFLATER_SERVICE);
|
||||
|
||||
assert inflater != null;
|
||||
View layout = inflater.inflate(R.layout.dui_dialog_color_picker, null);
|
||||
|
||||
setContentView(layout);
|
||||
mColorPicker = layout.findViewById(R.id.color_picker_view);
|
||||
mOldColor = layout.findViewById(R.id.old_color_panel);
|
||||
mNewColor = layout.findViewById(R.id.new_color_panel);
|
||||
|
||||
setTitle(R.string.dialog_color_picker);
|
||||
mHex = layout.findViewById(R.id.hex);
|
||||
ImageButton mSetButton = layout.findViewById(R.id.enter);
|
||||
|
||||
mColorPicker = (ColorPickerView) layout.findViewById(R.id.color_picker_view);
|
||||
mOldColor = (ColorPickerPanelView) layout.findViewById(R.id.old_color_panel);
|
||||
mNewColor = (ColorPickerPanelView) layout.findViewById(R.id.new_color_panel);
|
||||
|
||||
mWhite = (ColorPickerPanelView) layout.findViewById(R.id.white_panel);
|
||||
mBlack = (ColorPickerPanelView) layout.findViewById(R.id.black_panel);
|
||||
mCyan = (ColorPickerPanelView) layout.findViewById(R.id.cyan_panel);
|
||||
mRed = (ColorPickerPanelView) layout.findViewById(R.id.red_panel);
|
||||
mGreen = (ColorPickerPanelView) layout.findViewById(R.id.green_panel);
|
||||
mYellow = (ColorPickerPanelView) layout.findViewById(R.id.yellow_panel);
|
||||
|
||||
mHex = (EditText) layout.findViewById(R.id.hex);
|
||||
mSetButton = (ImageButton) layout.findViewById(R.id.enter);
|
||||
|
||||
((LinearLayout) mOldColor.getParent()).setPadding(
|
||||
Math.round(mColorPicker.getDrawingOffset()),
|
||||
0,
|
||||
Math.round(mColorPicker.getDrawingOffset()),
|
||||
0
|
||||
);
|
||||
((LinearLayout) mOldColor.getParent()).setPadding(Math.round(mColorPicker.getDrawingOffset()),
|
||||
0, Math.round(mColorPicker.getDrawingOffset()), 0);
|
||||
|
||||
mOldColor.setOnClickListener(this);
|
||||
mNewColor.setOnClickListener(this);
|
||||
@@ -111,30 +82,21 @@ public class ColorPickerDialog
|
||||
mOldColor.setColor(color);
|
||||
mColorPicker.setColor(color, true);
|
||||
|
||||
setColorAndClickAction(mWhite, Color.WHITE);
|
||||
setColorAndClickAction(mBlack, Color.BLACK);
|
||||
setColorAndClickAction(mCyan, 0xff33b5e5);
|
||||
setColorAndClickAction(mRed, Color.RED);
|
||||
setColorAndClickAction(mGreen, Color.GREEN);
|
||||
setColorAndClickAction(mYellow, Color.YELLOW);
|
||||
|
||||
if (mHex != null) {
|
||||
mHex.setText(ColorPickerPreference.convertToARGB(color));
|
||||
}
|
||||
if (mSetButton != null) {
|
||||
mSetButton.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
String text = mHex.getText().toString();
|
||||
try {
|
||||
int newColor = ColorPickerPreference.convertToColorInt(text);
|
||||
mColorPicker.setColor(newColor, true);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
mSetButton.setOnClickListener(v -> {
|
||||
String text = mHex.getText().toString();
|
||||
try {
|
||||
int newColor = ColorPickerPreference.convertToColorInt(text);
|
||||
mColorPicker.setColor(newColor, true);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
setView(layout);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -145,40 +107,20 @@ public class ColorPickerDialog
|
||||
if (mHex != null) {
|
||||
mHex.setText(ColorPickerPreference.convertToARGB(color));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
/*
|
||||
* if (mListener != null) { mListener.onColorChanged(color); }
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
public void setAlphaSliderVisible(boolean visible) {
|
||||
void setAlphaSliderVisible(boolean visible) {
|
||||
mColorPicker.setAlphaSliderVisible(visible);
|
||||
}
|
||||
|
||||
public void setColorAndClickAction(ColorPickerPanelView previewRect, final int color) {
|
||||
if (previewRect != null) {
|
||||
previewRect.setColor(color);
|
||||
previewRect.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
try {
|
||||
mColorPicker.setColor(color, true);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a OnColorChangedListener to get notified when the color selected by the user has changed.
|
||||
*
|
||||
* @param listener
|
||||
*/
|
||||
public void setOnColorChangedListener(OnColorChangedListener listener) {
|
||||
void setOnColorChangedListener(OnColorChangedListener listener) {
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
@@ -196,6 +138,7 @@ public class ColorPickerDialog
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Bundle onSaveInstanceState() {
|
||||
Bundle state = super.onSaveInstanceState();
|
||||
@@ -205,10 +148,9 @@ public class ColorPickerDialog
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
mOldColor.setColor(savedInstanceState.getInt("old_color"));
|
||||
mColorPicker.setColor(savedInstanceState.getInt("new_color"), true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user