Browse Source

feat: 💥 color pick

master
niushuai233 1 year ago
parent
commit
3e738fcf45
  1. 4
      app/build.gradle
  2. 31
      app/src/main/java/cc/niushuai/dididone/ui/base/BaseFragment.java
  3. 63
      app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java
  4. 1
      app/src/main/res/layout/activity_new_project.xml
  5. 2
      app/src/main/res/values/strings.xml

4
app/build.gradle

@ -75,8 +75,10 @@ dependencies {
// calendar // calendar
implementation 'com.github.angcyo:CalendarView:3.7.1.37' // implementation 'com.github.angcyo:CalendarView:3.7.1.37'
implementation 'com.necer.ncalendar:ncalendar:5.0.2' implementation 'com.necer.ncalendar:ncalendar:5.0.2'
//
implementation "com.github.skydoves:colorpickerview:2.3.0"
// fab // fab
implementation 'com.github.clans:fab:1.6.4' implementation 'com.github.clans:fab:1.6.4'
// hutool // hutool

31
app/src/main/java/cc/niushuai/dididone/ui/base/BaseFragment.java

@ -0,0 +1,31 @@
package cc.niushuai.dididone.ui.base;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public abstract class BaseFragment extends Fragment implements InitAndSetListener {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
init();
setListeners();
}
}

63
app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java

@ -1,20 +1,31 @@
package cc.niushuai.dididone.ui.setting.project; package cc.niushuai.dididone.ui.setting.project;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;
import androidx.annotation.Nullable; import com.mikepenz.iconics.IconicsDrawable;
import com.skydoves.colorpickerview.ColorEnvelope;
import com.skydoves.colorpickerview.ColorPickerDialog;
import com.skydoves.colorpickerview.ColorPickerView;
import com.skydoves.colorpickerview.listeners.ColorEnvelopeListener;
import com.skydoves.colorpickerview.listeners.ColorListener;
import cc.niushuai.dididone.R; import cc.niushuai.dididone.R;
import cc.niushuai.dididone.biz.BizGlobal; import cc.niushuai.dididone.biz.BizGlobal;
import cc.niushuai.dididone.databinding.ActivityNewProjectBinding; import cc.niushuai.dididone.databinding.ActivityNewProjectBinding;
import cc.niushuai.dididone.ui.base.BaseActivity; import cc.niushuai.dididone.ui.base.BaseActivity;
import cc.niushuai.dididone.util.Toasts; import cc.niushuai.dididone.util.Toasts;
import cc.niushuai.dididone.util.XLog;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
public class NewProjectActivity extends BaseActivity { public class NewProjectActivity extends BaseActivity {
private ActivityNewProjectBinding binding; private ActivityNewProjectBinding binding;
private int selectedColor = -324225874;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -41,6 +52,48 @@ public class NewProjectActivity extends BaseActivity {
// 颜色选择器 // 颜色选择器
binding.npColorPicker.setOnClickListener(view -> { binding.npColorPicker.setOnClickListener(view -> {
ColorPickerDialog.Builder builder = new ColorPickerDialog
.Builder(this)
.setView(R.layout.my_colorpickerview_dialog_colorpicker);
TextView title = new TextView(this);
title.setText("选择一个图标颜色");
title.setPadding(10, 30, 0, 30);
title.setGravity(Gravity.CENTER_VERTICAL);
title.setTextSize(24);
title.setTextColor(Color.BLACK);
ColorPickerView colorPickerView = builder.getColorPickerView();
colorPickerView.setInitialColor(selectedColor);
colorPickerView.setColorListener(new ColorListener() {
@Override
public void onColorSelected(int color, boolean fromUser) {
selectedColor = color;
title.setBackgroundColor(color);
}
});
builder.setCustomTitle(title)
.setPositiveButton(getString(R.string.cp_color_confirm),
new ColorEnvelopeListener() {
@Override
public void onColorSelected(ColorEnvelope envelope, boolean fromUser) {
// setLayoutColor(envelope);
XLog.d("选择的颜色:{} {} {}, fromUser: {}", envelope.getColor(), envelope.getArgb(), envelope.getHexCode(), fromUser);
selectedColor = envelope.getColor();
changeIconColor(envelope.getColor());
}
})
.setNegativeButton(getString(R.string.cancel), (dialogInterface, i) -> {
colorPickerView.setInitialColor(selectedColor);
dialogInterface.dismiss();
})
.attachAlphaSlideBar(true)
.attachBrightnessSlideBar(true)
.setBottomSpace(12);
builder.show();
}); });
// 返回按钮 // 返回按钮
@ -66,4 +119,12 @@ public class NewProjectActivity extends BaseActivity {
}); });
} }
private void changeIconColor(int color) {
binding.npIconFill.setImageDrawable(new IconicsDrawable(this)
.icon(ReflectUtil.getFieldValue(binding.npIconFill.getDrawable(), "mIcon").toString())
.color(color)
.sizeDp(50)
);
}
} }

1
app/src/main/res/layout/activity_new_project.xml

@ -102,4 +102,5 @@
app:layout_constraintWidth_percent="0.35" /> app:layout_constraintWidth_percent="0.35" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

2
app/src/main/res/values/strings.xml

@ -29,5 +29,7 @@
<string name="np_color_picker">点我选颜色</string> <string name="np_color_picker">点我选颜色</string>
<string name="np_button_back">返回</string> <string name="np_button_back">返回</string>
<string name="np_button_confirm">保存</string> <string name="np_button_confirm">保存</string>
<string name="cp_color_confirm">选择该颜色</string>
<string name="cancel">取消</string>
</resources> </resources>
Loading…
Cancel
Save