联系人号码添加复制功能

This commit is contained in:
ZhanGSKen
2025-07-06 16:14:16 +08:00
parent dd577f1765
commit 1b030a2855
5 changed files with 58 additions and 7 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Sun Jul 06 07:58:58 GMT 2025 #Sun Jul 06 08:12:37 GMT 2025
stageCount=9 stageCount=9
libraryProject= libraryProject=
baseVersion=15.3 baseVersion=15.3
publishVersion=15.3.8 publishVersion=15.3.8
buildCount=1 buildCount=3
baseBetaVersion=15.3.9 baseBetaVersion=15.3.9

View File

@@ -5,19 +5,25 @@ package cc.winboll.studio.contacts.adapters;
* @Date 2025/02/26 13:35:44 * @Date 2025/02/26 13:35:44
* @Describe ContactAdapter * @Describe ContactAdapter
*/ */
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.LinearLayout;
import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import cc.winboll.studio.contacts.R; import cc.winboll.studio.contacts.R;
import cc.winboll.studio.contacts.beans.ContactModel; import cc.winboll.studio.contacts.beans.ContactModel;
import cc.winboll.studio.libaes.views.AOHPCTCSeekBar;
import com.hjq.toast.ToastUtils; import com.hjq.toast.ToastUtils;
import java.util.List; import java.util.List;
import cc.winboll.studio.libaes.views.AOHPCTCSeekBar;
public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> { public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> {
@@ -26,8 +32,10 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactV
private static final int REQUEST_CALL_PHONE = 1; private static final int REQUEST_CALL_PHONE = 1;
private List<ContactModel> contactList; private List<ContactModel> contactList;
Context mContext;
public ContactAdapter(List<ContactModel> contactList) { public ContactAdapter(Context context, List<ContactModel> contactList) {
mContext = context;
this.contactList = contactList; this.contactList = contactList;
} }
@@ -41,6 +49,37 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactV
@Override @Override
public void onBindViewHolder(@NonNull ContactViewHolder holder, int position) { public void onBindViewHolder(@NonNull ContactViewHolder holder, int position) {
final ContactModel contact = contactList.get(position); final ContactModel contact = contactList.get(position);
holder.llPhoneNumberMain.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View p1) {
// 弹出复制菜单
PopupMenu menu = new PopupMenu(mContext, holder.llPhoneNumberMain);
//加载菜单资源
menu.getMenuInflater().inflate(R.menu.toolbar_contact_phonenumber, menu.getMenu());
//设置点击事件的响应
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
int nItemId = menuItem.getItemId();
if (nItemId == R.id.item_contact_phonenumber_copy) {
// Gets a handle to the clipboard service.
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
// Creates a new text clip to put on the clipboard
ClipData clip = ClipData.newPlainText("simple text", contact.getNumber());
// Set the clipboard's primary clip.
clipboard.setPrimaryClip(clip);
Toast.makeText(mContext, "Copy to clipboard.", Toast.LENGTH_SHORT).show();
}
return true;
}
});
//一定要调用show()来显示弹出式菜单
menu.show();
return true;
}
});
holder.contactName.setText(contact.getName()); holder.contactName.setText(contact.getName());
holder.contactNumber.setText(contact.getNumber()); holder.contactNumber.setText(contact.getNumber());
@@ -69,12 +108,14 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactV
} }
public class ContactViewHolder extends RecyclerView.ViewHolder { public class ContactViewHolder extends RecyclerView.ViewHolder {
LinearLayout llPhoneNumberMain;
TextView contactName; TextView contactName;
TextView contactNumber; TextView contactNumber;
AOHPCTCSeekBar dialAOHPCTCSeekBar; AOHPCTCSeekBar dialAOHPCTCSeekBar;
public ContactViewHolder(@NonNull View itemView) { public ContactViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
llPhoneNumberMain = itemView.findViewById(R.id.itemcontactLinearLayout1);
contactName = itemView.findViewById(R.id.contact_name); contactName = itemView.findViewById(R.id.contact_name);
contactNumber = itemView.findViewById(R.id.contact_number); contactNumber = itemView.findViewById(R.id.contact_number);
dialAOHPCTCSeekBar = itemView.findViewById(R.id.aohpctcseekbar_dial); dialAOHPCTCSeekBar = itemView.findViewById(R.id.aohpctcseekbar_dial);

View File

@@ -73,7 +73,7 @@ public class ContactsFragment extends Fragment {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
recyclerView = view.findViewById(R.id.contacts_recycler_view); recyclerView = view.findViewById(R.id.contacts_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
contactAdapter = new ContactAdapter(contactList); contactAdapter = new ContactAdapter(getContext(), contactList);
recyclerView.setAdapter(contactAdapter); recyclerView.setAdapter(contactAdapter);
searchEditText = view.findViewById(R.id.search_edit_text); searchEditText = view.findViewById(R.id.search_edit_text);

View File

@@ -9,7 +9,8 @@
<LinearLayout <LinearLayout
android:orientation="horizontal" android:orientation="horizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:id="@+id/itemcontactLinearLayout1">
<TextView <TextView
android:id="@+id/contact_number" android:id="@+id/contact_number"

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_contact_phonenumber_copy"
android:title="Copy"/>
</menu>