Android Open Source - simple_color_chooser_demo Simple Color Chooser Dialog Fragment






From Project

Back to project page simple_color_chooser_demo.

License

The source code is released under:

MIT License

If you think the Android project simple_color_chooser_demo listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.fumobox.demo;
//from w  ww .  j  av  a  2s  . c  o  m
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SimpleColorChooserDialogFragment extends DialogFragment {

  private OnColorChangedListener _listener;
  
  public static void show(int title, int color, OnColorChangedListener listener, Activity act) {
    SimpleColorChooserDialogFragment d = new SimpleColorChooserDialogFragment();
    d._listener = listener;
    Bundle args = new Bundle();
    args.putInt("title", title);
    args.putInt("color", color);
    d.setArguments(args);
    d.show(act.getFragmentManager(), "dialog");
  }
  
  public interface OnColorChangedListener {
    void colorChanged(int color, int r, int g, int b);
  }
  
  @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
    SimpleColorChooserDialog d = new SimpleColorChooserDialog(this.getActivity());
    return d;
  }
  
  private class SimpleColorChooserDialog extends Dialog {

    private int _color;
    private int _r, _g, _b;
    
    private CheckBox _cb_mono;

    private TextView _tv01;

    private ColorBoxView _colbox;

    private SeekBar[] _sb;

    public SimpleColorChooserDialog(Context context) {
      super(context);
    }

    public void onCreate(Bundle savedInstanceState) {
      setCanceledOnTouchOutside(true);
      setContentView(this.getLayoutInflater().inflate(R.layout.color_chooser, null));
      
      setTitle(getArguments().getInt("title"));
      
      _color = getArguments().getInt("color");
      
      _colbox = (ColorBoxView) findViewById(R.id.colbox);
      _sb = new SeekBar[3];
      _sb[0] = (SeekBar) findViewById(R.id.sb_gap);
      _sb[0].setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
          if (!fromUser) {
            return;
          }
          _r = progress;
          if (_cb_mono.isChecked()) {
            _sb[1].setProgress(progress);
            _sb[2].setProgress(progress);
            _g = progress;
            _b = progress;
          }
          combineColor();
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
      });

      _sb[1] = (SeekBar) findViewById(R.id.sb_g);
      _sb[1].setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
          if (!fromUser) {
            return;
          }
          _g = progress;
          if (_cb_mono.isChecked()) {
            _sb[0].setProgress(progress);
            _sb[2].setProgress(progress);
            _r = progress;
            _b = progress;
          }
          combineColor();
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
      });

      _sb[2] = (SeekBar) findViewById(R.id.sb_b);
      _sb[2].setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
          if (!fromUser) {
            return;
          }
          _b = progress;
          if (_cb_mono.isChecked()) {
            _sb[0].setProgress(progress);
            _sb[1].setProgress(progress);
            _r = progress;
            _g = progress;
          }
          combineColor();
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
      });

      _tv01 = (TextView) findViewById(R.id.tv01);

      _cb_mono = (CheckBox) findViewById(R.id.cb_marge);
      _cb_mono.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
          if (_cb_mono.isChecked()) {
            _r = _sb[0].getProgress();
            _sb[1].setProgress(_r);
            _sb[2].setProgress(_r);
            _g = _r;
            _b = _r;
            combineColor();
          }
        }
      });

      Button bt_ok = (Button) findViewById(R.id.bt_ok);
      bt_ok.setOnClickListener(new android.view.View.OnClickListener() {
        @Override
        public void onClick(View v) {
          SimpleColorChooserDialog.this.dismiss();
          if (_listener != null) {
            _listener.colorChanged(_color, _r, _g, _b);
          }
        }
      });

      Button bt_cancel = (Button) findViewById(R.id.bt_cancel);
      bt_cancel.setOnClickListener(new android.view.View.OnClickListener() {
        @Override
        public void onClick(View v) {
          dismiss();
        }
      });
      
      adjustBar();
    }

    public void adjustBar() {
      _r = (_color >>> 16) & 0xff;
      _g = (_color >>> 8) & 0xff;
      _b = (_color >>> 0) & 0xff;
      _sb[0].setProgress(_r);
      _sb[1].setProgress(_g);
      _sb[2].setProgress(_b);
      _colbox.setColor(_color);
      _tv01.setText("#" + toHexString(_color & 0x00ffffff, 6) + " (" + _r + ", " + _g + ", " + _b + ")");
    }

    public void combineColor() {
      _color = 0xff000000;
      _color |= _r << 16;
      _color |= _g << 8;
      _color |= _b;
      _colbox.setColor(_color);
      _tv01.setText("#" + toHexString(_color & 0x00ffffff, 6) + " (" + _r + ", " + _g + ", " + _b + ")");
    }

    private String toHexString(int value, int length) {
      String str = Integer.toHexString(value);
      if(str.length() >= length) {
        return str;
      } else {
        StringBuffer sb = new StringBuffer();
        for(int i = length - str.length(); i > 0; i--) {
          sb.append("0");
        }
        return sb.toString() + str;
      }
    }
    
  }
  
}




Java Source Code List

com.fumobox.demo.ColorBoxView.java
com.fumobox.demo.MainActivity.java
com.fumobox.demo.SimpleColorChooserDialogFragment.java