前言

在Android开发过程中偶尔会涉及到剪切板相关操作。今天,就让我们来学习下剪切板实现的一些功能吧。我把剪切板相关内容封装到一个类ClipboardHelper中,下面就来讲讲它的使用吧。

今天涉及的内容:

ClipboardHelper类中方法简介

MainActivity代码

效果图和项目结构图

ClipboardHelper源码

先来波效果图

监听本app复制动作效果图

k.gif

监听其他app复制进来的效果图

k2.gif

一. ClipboardHelper类中方法简介

ClipboardHelperl作为一个剪切板帮助类,采用单例模式实例化。初始化该对象,你可以这样

ClipboardHelper helper=ClipboardHelper.getInstance();

一般我们直接用:

ClipboardHelper.getInstance();

ClipboardHelperl具备以下方法:

/**

* 注册剪切板复制、剪切事件监听

*

* @param context

* @param value 设置默认值后,获取的则是你设置的值,而不是监听的值。当设为null时,获取的是监听到的值

* @param listener

*/

registerClipEvents(Context context,String value,OnClipboardListener listener)

此方法用于监听本app中复制,剪切,粘贴动作。当 value 为 null 时,表示监听获取 “复制/剪切/粘贴”的内容,当 value 不为 null 时,表示监听 “复制/剪切/粘贴”动作,并显示 value 内容。

在监听本app 的 “复制/剪切/粘贴” 操作的时候,需要注册,当然在使用完后,则需要注销,下面贴出注销方法:

/**注销剪切板事件**/

unRegisterClipEvents()

ClipboardHelper类在监听本 app的 “复制/剪切/粘贴”动作时需要注册和注销动作。但是在获取剪切板内容的时候,则无需注册和注销动作。当你在其他app(如微信)中复制了内容,然后想在本app打开的时候,立马获取复制的内容,那么你可以调用以下方法:

/**

* 获取剪切板内容

* 适用场景:从别的app复制到本app时获取复制内容

* 如你复制了微信中的聊天内容,在打开你app的时候,要获取到你复制的内容,就可使用本方法

* 一般你app中要判断app是否在前台,或者将此方法放到你需要获取的界面的onResume()周期中

* 便于一打开此界面就能获取内容。

*

* 注:需要判断app回到前台

*/

getClipboardContent(Context context,OnClipboardListener listener)

此方法适用场景: 当你需要用户在其他app中复制了一个链接,然后进入 本app时,立马打开与该链接对应的活动的时候,可以使用本方法实现。

除此之外,ClipboardHelper还提供了一个设置本app中TextView内容可直接复制的设置方法。因为一般写的app中,如无特殊需求,TextView显示的内容都是禁止复制的。设置TextView内容可复制方法如下:

/**设置textView可被复制,剪切和粘贴**/

canBePasted(TextView textView)

二. MainActivity代码

下面贴出 ClipboardHelper 在MainActivity中使用代码:

/**

* Title:

*

* description:

* autor:pei

* created on ${DATE}

*/

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private TextView mTv;

private Button mBtn;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initData();

setListener();

}

private void initData(){

mTv = findViewById(R.id.tv);

mBtn = findViewById(R.id.btn);

mTv.setText("作者法布尔更是用放松而又充满有趣的态度写下了自己对观察的每一只昆虫的观察日志。活灵活现地写出了昆虫在干什么的时候做了哪些动作,或者外表凶猛却又可爱的昆虫,也或许是其他内容。作者坚强不屈和遇到困难不退缩的精神使他获得了巨大的发现或有趣的动作。一直观察昆虫作者法布尔并没有感道乏味,而觉得昆虫是他的生命的一部分");

ClipboardHelper.getInstance().canBePasted(mTv);

}

private void setListener() {

mBtn.setOnClickListener(this);

ClipboardHelper.getInstance().registerClipEvents(MainActivity.this, null,new ClipboardHelper.OnClipboardListener() {

@Override

public void clipboard(String content) {

LogUtil.i("==========监听剪切内容======="+content);

if(StringUtil.isNotEmpty(content)) {

showAlertDialog("复制被监听了", content, R.mipmap.ic_launcher, "确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

}, null, null);

}

}

});

}

@Override

protected void onResume() {

super.onResume();

//获取剪切板内容

ClipboardHelper.getInstance().getClipboardContent(MainActivity.this, new ClipboardHelper.OnClipboardListener() {

@Override

public void clipboard(String content) {

if(StringUtil.isNotEmpty(content)) {

showAlertDialog("提示", content, R.mipmap.ic_launcher, "确定", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

}, null, null);

}

}

});

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn:

break;

default:

break;

}

}

@Override

protected void onDestroy() {

super.onDestroy();

//注销剪切板事件

ClipboardHelper.getInstance().unRegisterClipEvents();

}

/** 含有标题、内容、图标、两个按钮的对话框 **/

protected AlertDialog showAlertDialog(String title, String message, int icon, String positiveText,

DialogInterface.OnClickListener onPositiveClickListener, String negativeText,

DialogInterface.OnClickListener onNegativeClickListener) {

AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle(title).setMessage(message).setIcon(icon)

.setPositiveButton(positiveText, onPositiveClickListener).setNegativeButton(negativeText, onNegativeClickListener).show();

return alertDialog;

}

}

三. 效果图和项目结构图

监听本app复制动作效果图

k.gif

监听其他app复制进来的效果图

k2.gif

项目结构图

image.png

四. ClipboardHelper源码

ClipboardHelper源码如下:

android 剪切板监听_android剪切板操作相关推荐

  1. android 2.1 监听电话状态并自动接听来电

    一.开发环境       Elispse5.5,JDK1.6,Aadroid 2.1 二.开发中使用到的重点技术点:       距离感应(SENSOR_SERVICE ),音讯管理(AUDIO_SE ...

  2. Android的Button监听

    1.android简单按钮监听----单个监听 start = (Button)findViewById(R.id.btnStart); start.setOnClickListener(new On ...

  3. android 控件监听方法是,Android | Android中监听Button的实现

    Android中监听Button的实现 单按钮监听 2018-04-27_061911.jpg 1.在按钮所属的父Activity里,创建按钮变量 private Button mBtnTextVie ...

  4. android 软键盘监听、隐藏、显示、点击空白处隐藏和Android KEYCODE 键值大全

    android 软键盘监听.隐藏.显示.点击空白处隐藏. textView.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boo ...

  5. android App内监听截图加二维码

    Android截屏功能是一个常用的功能,可以方便的用来分享或者发送给好友,本文介绍了如何实现app内截屏监控功能,当发现用户在我们的app内进行了截屏操作时,进行对图片的二次操作,例如添加二维码,公司 ...

  6. H5及微信小程序实测可用——监听手机返回键操作

    目录 1.自定义导航(只能拦截左上角返回) 2.内嵌H5实现拦截物理键返回(均可监听) 微信小程序开发过程中我们经常遇到需要监听点击左上角返回.手机物理返回键或者左滑返回的需求 微信原生是没有API支 ...

  7. android 剪切板监听_安卓监听剪切复制粘贴事件实例

    本文的剪切复制粘贴事件只针对文本,URI 和 intent 不在讨论范围内. 实例代码实现了2个功能: 监听剪切复制粘贴事件: 获取剪切复制或粘贴的文本: 剪切复制 有2个方法监听剪切复制事件:剪切板 ...

  8. Python 技术篇-利用pyqt5库监听剪切板变动,clipboard.dataChanged.connect()剪切板监听

    PyQt5 的 clipboard.dataChanged.connect() 方法可以监听剪切板的变动. from PyQt5.QtWidgets import *app = QApplicatio ...

  9. java edittext 输入监听_Android应用开发之Android EditText 监听用户输入完成的实例

    本文将带你了解Android应用开发Android EditText 监听用户输入完成的实例,希望本文对大家学Android有所帮助. 我们都知道, Android   EditText输入框,并没有 ...

最新文章

  1. sourcetree下回退
  2. java中的模板方法设计模式
  3. mysql 重置root_MySQL 重置Mysql root用户账号密码
  4. vs服务器连接xp系统,xp系统远程连接服务器
  5. Linux系统直接升级GLIBC版本
  6. Why IBASE category 03 is filtered out in creation
  7. 少年,看你异于常人,有空花2小时来参加有3000人的源码共读嘛~
  8. Golang 学习资料
  9. LeetCode(1047)——删除字符串中的所有相邻重复项(JavaScript)
  10. ts获取服务器数据_在 Angular6 中使用 HTTP 请求服务端数据
  11. 绿盟科技:“无敌舰队”DDoS勒索防御关键是应急经验积累
  12. 数据集:波士顿地区房价预测
  13. 一个详细介绍CPU Memory Kernel的博客
  14. python中jieba库的作用_Python jieba库用法及实例解析
  15. PageHelper分页插件的简单使用
  16. 计算机一级pdf百度云,计算机一级(实操).pdf
  17. 计算机ae软件的入门教学视频教程,新手如何入门剪辑?3分钟教会你快速上手(附赠教程)...
  18. android 获取蓝牙设备id_安卓蓝牙系统中如何获取蓝牙音乐的音频跟踪会话ID
  19. 重点客户销售数据分析python_项目实战 | 使用python分析销售数据
  20. 中粮集团智慧园区网,锐捷用匠心打造工业4.0时代智能工厂

热门文章

  1. 宁波大学c语言理论考试试题科目一,新驾考开考 科目一考试题库更新
  2. 2.8 Rn的子空间(第2章矩阵代数)
  3. 【读书笔记】小米生态链战地笔记-精准产品定义
  4. steam的植物大战僵尸打不开(fatal error)
  5. 2.3 逻辑代数的基本公式和常用公式
  6. 评标专家抽取系统推荐:云智专家评标抽取系统
  7. [游戏随机生成地形] Meteorite Algorithm
  8. php redis实现抽奖,使用Redis完成抽奖功能
  9. 【无标题】鱼池转发命令
  10. 不在数组里的最小正整数