ColorPicker和ColorView

时间:2018-04-24 16:39:50

标签: android colors color-picker

所以我在我的.xml布局上得到了这个按钮和这个ColorView,就像你在左侧的snapshoot中看到的那样,我想用你在右边看到的对话框中用户选择的颜色填充ColorView方块的背景snapshoot。

enter image description here enter image description here

我的.xml代码:

    <Button
       android:id="@+id/color_button"
       style="@style/buttonStyle"
       android:layout_width="280sp"
       android:layout_height="wrap_content"
       android:layout_alignBottom="@+id/color_view"
       android:layout_alignParentStart="true"
       android:layout_marginStart="13dp"
       android:onClick="showColorPickerDialog"
       android:text="Color" />

    <es.lost2found.lost2foundUI.pickerUI.ColorView
       android:id="@+id/color_view"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentEnd="true"
       android:layout_centerVertical="true"
       android:layout_marginEnd="18dp"
       android:background="@color/otherUserMsgColor">
    </es.lost2found.lost2foundUI.pickerUI.ColorView>

按钮上调用的onClick方法就是这个:

public void showColorPickerDialog(View v) {
    ColorPickerUI colorpicker = new ColorPickerUI();
    colorpicker.build()
            .title(R.string.color_dialog_title)
            .colorPreset(Color.BLACK)
            .allowCustom(true)
            .show(this, "dialog");
}

我正在使用QuadFlask ColorPicker,我不知道是否有方法可以执行我想要的操作,我一直在搜索存储库,但我没有找到它。

如果有任何方法可以获得我想要的其他colorPicker,请告诉我,任何帮助都会被贬低!

2 个答案:

答案 0 :(得分:2)

您需要添加侦听器,当选择颜色或按下正按钮时将触发该侦听器,因此请使用

public void showColorPickerDialog(View v) {
    ColorPickerUI colorpicker = new ColorPickerUI();
    colorpicker
            .title(R.string.color_dialog_title)
            .colorPreset(Color.BLACK)
            .allowCustom(true)// change color on continuous selection
            .addOnColorChangedListener(new OnColorChangedListener() {
                @Override
                public void onColorChanged(int selectedColor) {
                    findViewById(R.id.color_button).setBackgroundColor(selectedColor);
                }
            })// change color on selection
            .addOnColorSelectedListener( new OnColorSelectedListener() {
                @Override
                public void onColorSelected(int selectedColor) {
                    findViewById(R.id.color_button).setBackgroundColor(selectedColor);
                }
            })
            .build().show(this, "dialog");
}

答案 1 :(得分:1)

最后我明白了,我在我的ColorPicker类上使用了#include <cmath> int main () { auto sellmeier = [B1=0.6961663, B2=0.4079426, B3=0.8974794, C1=0.0684043*0.0684043, C2=0.1162414*0.1162414, C3=9.896161*9.896161] (double const wavelength) { double refractive_index_sq = 1; double lambda_sq = std::pow(wavelength, 2); refractive_index_sq += B1*lambda_sq/(lambda_sq-C1); refractive_index_sq += B2*lambda_sq/(lambda_sq-C2); refractive_index_sq += B3*lambda_sq/(lambda_sq-C3); return refractive_index_sq; }; sellmeier(1.0); } 方法,我把代码放在这里以防有人需要它

onColorSet()

我所要做的就是使用变量mSelectedColor和setBackground。非常感谢@Pavneet_Singh的帮助,我相信有人会使用您的代码!