Android仿QQ复制昵称效果

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android仿QQ复制昵称效果脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

背景:

这几天做一个复制文本的需求,突然看到QQ上复制昵称跟QQ号的效果,觉得很不错,就想要模仿一波,办法比较简单粗暴,反编译QQ获取了那个.9图片,然后就是用PopWindow实现了。

解决办法:

自定义PopWindow

 public class CopyContentPopWindow extends PopupWindow {   PRivate final View content;  TextView tvLabel;  TextView tvLabelFake;  ActivITy context;  private OnCopyContentListener onCopyContentListener;  public CopyContentPopWindow(Activity context) {   LayoutInflater inflater = (LayoutInflater) context     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);   content = inflater.inflate(R.layout.popwindow_copy_content, null);   tvLabel = content.findViewById(R.id.tv_label);   tvLabelFake = content.findViewById(R.id.tv_label_fake);   tvLabel.setOnClickListener(new View.OnClickListener() {    @override    public void onClick(View v) {     if (onCopyContentListener != null) {      onCopyContentListener.copyContent();     }     CopyContentPopWindow.this.dismiss();    }   });   this.setContentView(content);   this.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);   this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);   this.setFocusable(true);   this.setOutsideTouchable(true);   this.update();   ColorDrawable dw = new ColorDrawable(0000000000);   this.setBackgroundDrawable(dw);   this.context = context;  }  public void setTvLabel(String text) {   tvLabel.setText(text);   tvLabelFake.setText(text);   update();  }  public void setOnCopyContentListener(OnCopyContentListener onCopyContentListener) {   this.onCopyContentListener = onCopyContentListener;  }  public void showPopupWindow(View parent) {   if (!this.isShowing()) {    int[] location = new int[2];    parent.getLocationOnScreen(location); //   this.showAsDropDown(parent, 0, 0);    showAtLocation(parent, Gravity.NO_GRAVITY, location[0], location[1]);   } else {    this.dismiss();   }  }  public interface OnCopyContentListener {   void copyContent();  } }

具体使用代码:

 public class MainActivity extends AppCompatActivity {  TextView tvNickName;  TextView tvQQNum;  @Override  protected void onCreate(Bundle savedInstancestate) {   suPEr.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   tvNickName = findViewById(R.id.tv_nick_name);   tvQQNum = findViewById(R.id.tv_qq_num);   tvNickName.setOnClickListener(v -> {    CopyContentPopWindow copyContentPopWindow = new CopyContentPopWindow(MainActivity.this);    copyContentPopWindow.setTvLabel("复制");    copyContentPopWindow.setOnCopyContentListener(() -> {     ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);     ClipData clipData = ClipData.newPlainText("Label", tvNickName.getText().toString());     cm.setPrimaryClip(clipData);     Toast.makeText(MainActivity.this, "复制成功", Toast.LENGTH_LONG).show();    });    copyContentPopWindow.showPopupWindow(tvNickName);   });   tvQQNum.setOnClickListener(v -> {    CopyContentPopWindow copyContentPopWindow = new CopyContentPopWindow(MainActivity.this);    copyContentPopWindow.setTvLabel("复制QQ号");    copyContentPopWindow.setOnCopyContentListener(() -> {     ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);     ClipData clipData = ClipData.newPlainText("Label", "100001");     cm.setPrimaryClip(clipData);     Toast.makeText(MainActivity.this, "复制成功", Toast.LENGTH_LONG).show();    });    copyContentPopWindow.showPopupWindow(tvQQNum);   });  } }

代码下载地址

链接:https://pan.baidu.COM/s/1jChJvQ9i6JrfFqwU3q1Mtg 密码:lsf7

其他相关

同事找到了一个不错的开项目,https://github.com/shangmingchao/PopupList 突然觉得这个用起来更容易

总结

android教程
脚本网站
android studio

脚本宝典总结

以上是脚本宝典为你收集整理的Android仿QQ复制昵称效果全部内容,希望文章能够帮你解决Android仿QQ复制昵称效果所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。