diff --git a/app/build.gradle b/app/build.gradle index 6a44ef0..299c55a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,8 +75,10 @@ dependencies { // 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.github.skydoves:colorpickerview:2.3.0" // fab 组件 implementation 'com.github.clans:fab:1.6.4' // hutool 工具 diff --git a/app/src/main/java/cc/niushuai/dididone/ui/base/BaseFragment.java b/app/src/main/java/cc/niushuai/dididone/ui/base/BaseFragment.java new file mode 100644 index 0000000..8ee81d8 --- /dev/null +++ b/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(); + } + +} diff --git a/app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java b/app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java index 08d7c15..ddede1f 100644 --- a/app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java +++ b/app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java @@ -1,20 +1,31 @@ package cc.niushuai.dididone.ui.setting.project; import android.content.Intent; +import android.graphics.Color; 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.biz.BizGlobal; import cc.niushuai.dididone.databinding.ActivityNewProjectBinding; import cc.niushuai.dididone.ui.base.BaseActivity; import cc.niushuai.dididone.util.Toasts; +import cc.niushuai.dididone.util.XLog; +import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; public class NewProjectActivity extends BaseActivity { private ActivityNewProjectBinding binding; + private int selectedColor = -324225874; @Override protected void onCreate(Bundle savedInstanceState) { @@ -41,6 +52,48 @@ public class NewProjectActivity extends BaseActivity { // 颜色选择器 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) + ); + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_new_project.xml b/app/src/main/res/layout/activity_new_project.xml index c59adb2..be3da62 100644 --- a/app/src/main/res/layout/activity_new_project.xml +++ b/app/src/main/res/layout/activity_new_project.xml @@ -102,4 +102,5 @@ app:layout_constraintWidth_percent="0.35" /> + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f60cf24..8d9f436 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -29,5 +29,7 @@ 点我选颜色 返回 保存 + 选择该颜色 + 取消 \ No newline at end of file