From 859238a17313251d4ae5487f28e0599123de7f1d Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Tue, 4 Mar 2025 18:52:16 +0800 Subject: [PATCH] 1852 --- contacts/build.properties | 4 +- .../adapters/PhoneConnectRuleAdapter.java | 95 +++++++++-- .../studio/contacts/views/LeftScrollView.java | 147 ++++++++++++++++++ .../src/main/res/layout/view_left_scroll.xml | 41 +++++ .../layout/view_phone_connect_rule_simple.xml | 18 +-- .../view_phone_connect_rule_simple2.xml | 55 +++++++ contacts/src/main/res/values/colors.xml | 5 + 7 files changed, 336 insertions(+), 29 deletions(-) create mode 100644 contacts/src/main/java/cc/winboll/studio/contacts/views/LeftScrollView.java create mode 100644 contacts/src/main/res/layout/view_left_scroll.xml create mode 100644 contacts/src/main/res/layout/view_phone_connect_rule_simple2.xml diff --git a/contacts/build.properties b/contacts/build.properties index 59c103b..8b0f179 100644 --- a/contacts/build.properties +++ b/contacts/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue Mar 04 01:25:27 HKT 2025 +#Tue Mar 04 10:00:11 GMT 2025 stageCount=9 libraryProject= baseVersion=1.0 publishVersion=1.0.8 -buildCount=0 +buildCount=60 baseBetaVersion=1.0.9 diff --git a/contacts/src/main/java/cc/winboll/studio/contacts/adapters/PhoneConnectRuleAdapter.java b/contacts/src/main/java/cc/winboll/studio/contacts/adapters/PhoneConnectRuleAdapter.java index 93d1165..8ab2f88 100644 --- a/contacts/src/main/java/cc/winboll/studio/contacts/adapters/PhoneConnectRuleAdapter.java +++ b/contacts/src/main/java/cc/winboll/studio/contacts/adapters/PhoneConnectRuleAdapter.java @@ -19,7 +19,12 @@ import androidx.recyclerview.widget.RecyclerView; import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.beans.PhoneConnectRuleModel; import cc.winboll.studio.contacts.dun.Rules; +import java.util.ArrayList; import java.util.List; +import android.widget.LinearLayout; +import android.view.MotionEvent; +import android.widget.HorizontalScrollView; +import cc.winboll.studio.contacts.views.LeftScrollView; public class PhoneConnectRuleAdapter extends RecyclerView.Adapter { @@ -53,15 +58,75 @@ public class PhoneConnectRuleAdapter extends RecyclerView.Adapter list = Rules.getInstance(context).getPhoneBlacRuleBeanList(); +// list.remove(position); +// Rules.getInstance(context).saveRules(); +// notifyItemChanged(position); +// } +// }); +// simpleViewHolder.editButton.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// model.setIsSimpleView(false); +// notifyItemChanged(position); +// } +// }); +// simpleViewHolder.deleteButton.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// model.setIsSimpleView(false); +// ArrayList list = Rules.getInstance(context).getPhoneBlacRuleBeanList(); +// list.remove(position); +// Rules.getInstance(context).saveRules(); +// notifyItemChanged(position); +// } +// }); +// // 触摸事件处理 +// simpleViewHolder.contentLayout.setOnTouchListener(new View.OnTouchListener() { +// @Override +// public boolean onTouch(View v, MotionEvent event) { +// switch (event.getAction()) { +// case MotionEvent.ACTION_DOWN: +// simpleViewHolder.startX = event.getX(); +// simpleViewHolder.isSwiping = true; +// break; +// case MotionEvent.ACTION_MOVE: +// if (simpleViewHolder.isSwiping) { +// float deltaX = simpleViewHolder.startX - event.getX(); +// if (deltaX > 0) { // 左滑 +// float translationX = Math.max(-simpleViewHolder.actionLayout.getWidth(), -deltaX); +// simpleViewHolder.contentLayout.setTranslationX(translationX); +// simpleViewHolder.actionLayout.setVisibility(View.VISIBLE); +// } +// } +// break; +// case MotionEvent.ACTION_UP: +// simpleViewHolder.isSwiping = false; +// if (simpleViewHolder.contentLayout.getTranslationX() < -simpleViewHolder.actionLayout.getWidth() / 2) { +// // 保持按钮显示 +// simpleViewHolder.contentLayout.setTranslationX(-actionLayout.getWidth()); +// } else { +// // 恢复原状 +// simpleViewHolder.contentLayout.animate().translationX(0).setDuration(200).start(); +// simpleViewHolder.actionLayout.setVisibility(View.INVISIBLE); +// } +// break; +// } +// return true; +// } +// }); } else if (holder instanceof EditViewHolder) { final EditViewHolder editViewHolder = (EditViewHolder) holder; editViewHolder.editText.setText(model.getRuleText()); @@ -95,13 +160,17 @@ public class PhoneConnectRuleAdapter extends RecyclerView.Adapter 0) { // 左滑 +// float translationX = Math.max(-(editButton.getWidth() + deleteButton.getWidth()), -deltaX); +// toolLayout.setTranslationX(translationX); +// scrollTo((int) translationX, 0); +// } +// } +// break; +// case MotionEvent.ACTION_UP: +// case MotionEvent.ACTION_CANCEL: +// isDragging = false; +// if (getScrollX() <= -(editButton.getWidth())) { +// // 编辑按钮完全显示,保持按钮显示 +// smoothScrollTo(-(editButton.getWidth() + deleteButton.getWidth()), 0); +// } else { +// // 恢复原状 +// smoothScrollTo(0, 0); +// toolLayout.setTranslationX(0); +// } +// break; +// } +// return true; +// } +// }); + + // 编辑按钮点击事件 + editButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (onActionListener != null) { + onActionListener.onEdit(); + } + } + }); + + // 删除按钮点击事件 + deleteButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (onActionListener != null) { + onActionListener.onDelete(); + } + } + }); + } + + // 设置文本内容 + public void setText(CharSequence text) { + textView.setText(text); + } + + // 定义回调接口 + public interface OnActionListener { + void onEdit(); + void onDelete(); + } + + private OnActionListener onActionListener; + + public void setOnActionListener(OnActionListener listener) { + this.onActionListener = listener; + } +} + diff --git a/contacts/src/main/res/layout/view_left_scroll.xml b/contacts/src/main/res/layout/view_left_scroll.xml new file mode 100644 index 0000000..c9f2e07 --- /dev/null +++ b/contacts/src/main/res/layout/view_left_scroll.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + +