1717import java .util .Locale ;
1818
1919public class ColorPicker extends ConfirmPopup <LinearLayout > implements TextView .OnEditorActionListener {
20- private static final int TOP_ID = 0x1 ;
21- private static final int BOTTOM_ID = 0x2 ;
20+ private static final int MULTI_ID = 0x1 ;
21+ private static final int BLACK_ID = 0x2 ;
2222 private int initColor = Color .WHITE ;
23- private ColorPanelView topColorView , bottomColorView ;
23+ private ColorPanelView multiColorView , blackColorView ;
2424 private EditText hexValView ;
2525 private ColorStateList hexValDefaultColor ;
2626 private OnColorPickListener onColorPickListener ;
@@ -32,41 +32,40 @@ public ColorPicker(Activity activity) {
3232 @ Override
3333 protected LinearLayout initContentView () {
3434 LinearLayout rootLayout = new LinearLayout (activity );
35- rootLayout .setLayoutParams (new LinearLayout .LayoutParams (LinearLayout . LayoutParams . MATCH_PARENT , LinearLayout . LayoutParams . WRAP_CONTENT ));
35+ rootLayout .setLayoutParams (new LinearLayout .LayoutParams (MATCH_PARENT , MATCH_PARENT ));
3636 rootLayout .setOrientation (LinearLayout .VERTICAL );
37- topColorView = new ColorPanelView (activity );
37+ blackColorView = new ColorPanelView (activity );
3838 //noinspection ResourceType
39- topColorView .setId (TOP_ID );
40- int screenHeight = Common .getPixels (activity )[1 ];
41- topColorView .setLayoutParams (new LinearLayout .LayoutParams (LinearLayout .LayoutParams .MATCH_PARENT , screenHeight / 3 ));
42- topColorView .setPointerDrawable (Common .getDrawable (activity , R .drawable .color_picker_cursor_top ));
43- topColorView .setLockPointerInBounds (true );
44- topColorView .setOnColorChangedListener (new ColorPanelView .OnColorChangedListener () {
39+ blackColorView .setId (BLACK_ID );
40+ blackColorView .setLayoutParams (new LinearLayout .LayoutParams (MATCH_PARENT , Common .toPx (activity , 30 )));
41+ blackColorView .setPointerDrawable (Common .getDrawable (activity , R .drawable .color_picker_cursor_bottom ));
42+ blackColorView .setLockPointerInBounds (false );
43+ blackColorView .setOnColorChangedListener (new ColorPanelView .OnColorChangedListener () {
4544 @ Override
4645 public void onColorChanged (ColorPanelView view , int color ) {
4746 updateCurrentColor (color );
4847 }
4948 });
50- rootLayout .addView (topColorView );
51- bottomColorView = new ColorPanelView (activity );
49+ rootLayout .addView (blackColorView );
50+ multiColorView = new ColorPanelView (activity );
5251 //noinspection ResourceType
53- bottomColorView .setId (BOTTOM_ID );
54- bottomColorView .setLayoutParams (new LinearLayout .LayoutParams (LinearLayout . LayoutParams . MATCH_PARENT , Common . toPx ( activity , 30 ) ));
55- bottomColorView .setPointerDrawable (Common .getDrawable (activity , R .drawable .color_picker_cursor_bottom ));
56- bottomColorView .setLockPointerInBounds (false );
57- bottomColorView .setOnColorChangedListener (new ColorPanelView .OnColorChangedListener () {
52+ multiColorView .setId (MULTI_ID );
53+ multiColorView .setLayoutParams (new LinearLayout .LayoutParams (MATCH_PARENT , 0 , 1.0f ));
54+ multiColorView .setPointerDrawable (Common .getDrawable (activity , R .drawable .color_picker_cursor_top ));
55+ multiColorView .setLockPointerInBounds (true );
56+ multiColorView .setOnColorChangedListener (new ColorPanelView .OnColorChangedListener () {
5857 @ Override
5958 public void onColorChanged (ColorPanelView view , int color ) {
6059 updateCurrentColor (color );
6160 }
6261 });
63- rootLayout .addView (bottomColorView );
62+ rootLayout .addView (multiColorView );
6463 LinearLayout previewLayout = new LinearLayout (activity );
6564 previewLayout .setOrientation (LinearLayout .HORIZONTAL );
6665 previewLayout .setGravity (Gravity .CENTER );
67- previewLayout .setLayoutParams (new LinearLayout .LayoutParams (MATCH_PARENT , Common .toPx (activity , 40 )));
66+ previewLayout .setLayoutParams (new LinearLayout .LayoutParams (MATCH_PARENT , Common .toPx (activity , 30 )));
6867 hexValView = new EditText (activity );
69- hexValView .setLayoutParams (new LinearLayout .LayoutParams (LinearLayout . LayoutParams . MATCH_PARENT , LinearLayout . LayoutParams . MATCH_PARENT ));
68+ hexValView .setLayoutParams (new LinearLayout .LayoutParams (MATCH_PARENT , MATCH_PARENT ));
7069 hexValView .setInputType (InputType .TYPE_TEXT_FLAG_NO_SUGGESTIONS );
7170 hexValView .setImeOptions (EditorInfo .IME_ACTION_DONE );
7271 hexValView .setGravity (Gravity .CENTER );
@@ -85,15 +84,15 @@ public void onColorChanged(ColorPanelView view, int color) {
8584 }
8685
8786 @ Override
88- protected void onShowPrepare ( ) {
89- super . onShowPrepare ( );
90- topColorView .setColor (initColor );//将触发onColorChanged,故必须先待其他控件初始化完成后才能调用
91- topColorView .setBrightnessGradientView (bottomColorView );
87+ protected void setContentViewAfter ( View contentView ) {
88+ setHeight ( screenHeight / 2 );
89+ multiColorView .setColor (initColor );//将触发onColorChanged,故必须先待其他控件初始化完成后才能调用
90+ multiColorView .setBrightnessGradientView (blackColorView );
9291 if (onColorPickListener != null ) {
9392 super .setOnConfirmListener (new OnConfirmListener () {
9493 @ Override
9594 public void onConfirm () {
96- onColorPickListener .onColorPicked (bottomColorView .getSelectedColor ());
95+ onColorPickListener .onColorPicked (blackColorView .getSelectedColor ());
9796 }
9897
9998 @ Override
@@ -138,7 +137,7 @@ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
138137 if (length == 6 || length == 8 ) {
139138 try {
140139 int color = Color .parseColor ("#" + hexString );
141- topColorView .setColor (color );
140+ multiColorView .setColor (color );
142141 hexValView .setTextColor (hexValDefaultColor );
143142 } catch (IllegalArgumentException e ) {
144143 hexValView .setTextColor (Color .RED );
0 commit comments