package com.marshalchen.common.uimodule.materialdesign.widgets;
import com.marshalchen.common.uimodule.R;
import com.marshalchen.common.uimodule.materialdesign.views.Slider;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
public class ColorSelector extends android.app.Dialog implements Slider.OnValueChangedListener {
int color = Color.BLACK;
View colorView;
OnColorSelectedListener onColorSelectedListener;
Slider red, green, blue;
public ColorSelector(Context context,Integer color, OnColorSelectedListener onColorSelectedListener) {
super(context, android.R.style.Theme_Translucent);
this.onColorSelectedListener = onColorSelectedListener;
if(color != null)
this.color = color;
setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if(ColorSelector.this.onColorSelectedListener != null)
ColorSelector.this.onColorSelectedListener.onColorSelected(ColorSelector.this.color);
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.material_design_color_selector);
colorView = findViewById(R.id.viewColor);
colorView.setBackgroundColor(color);
// Resize ColorView
colorView.post(new Runnable() {
@Override
public void run() {
LayoutParams params = (LayoutParams) colorView.getLayoutParams();
params.height = colorView.getWidth();
colorView.setLayoutParams(params);
}
});
// Configure Sliders
red = (Slider) findViewById(R.id.red);
green = (Slider) findViewById(R.id.green);
blue = (Slider) findViewById(R.id.blue);
int r = (this.color >> 16) & 0xFF;
int g = (this.color >> 8) & 0xFF;
int b = (this.color >> 0) & 0xFF;
red.setValue(r);
green.setValue(g);
blue.setValue(b);
red.setOnValueChangedListener(this);
green.setOnValueChangedListener(this);
blue.setOnValueChangedListener(this);
}
@Override
public void onValueChanged(int value) {
color = Color.rgb(red.getValue(), green.getValue(), blue.getValue());
colorView.setBackgroundColor(color);
}
// Event that execute when color selector is closed
public interface OnColorSelectedListener{
public void onColorSelected(int color);
}
}