android取QQ昵称,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

其他相关

总结

以上所述是小编给大家介绍的Android仿QQ复制昵称效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值