Android仿淘口令复制弹出框功能(简答版)
时间:2022-07-28
本文章向大家介绍Android仿淘口令复制弹出框功能(简答版),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上篇文章给大家介绍了Android实现打开手机淘宝并自动识别淘宝口令弹出商品信息功能,接下来通过本文给大家分享android简单版仿淘口令复制弹出框功能,希望对大家有所帮助!
使用Android系统的粘贴板管理服务及ClipboardManager通过addPrimaryClipChangedListener添加Listener来监听粘贴板的状态,很很简单的一个小功能~
1.首先创建一个Service在后台运行:
Intent intent = new Intent(this,MainService.class);
startService(intent);
另外同时在OnResume()中获得粘贴板复制的内容,用于在APP未启动或者Service被关闭时重新启动APP来弹出口令窗口
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
ClipboardManager mClipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
Log.e("Copylistenerdemo", mClipboardManager.getPrimaryClip().getItemAt(0).getText().toString());
}
2.在Service管理粘贴板服务:
mClipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
mClipboardManager.addPrimaryClipChangedListener(mPrimaryClipChangedListener);
3.在onPrimaryClipChanged()做想要的事情,例如弹出框:
使用WindowManager来显示弹出框
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View floatView = layoutInflater.inflate(R.layout.floater, null);
final WindowManager mWindowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
LayoutParams params = new WindowManager.LayoutParams();
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;//系统内部错误提示,显示于所有内容之上
params.format = PixelFormat.RGBA_8888;
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; //当窗口可以获得焦点(没有设置FLAG_NOT_FOCUSALBE选项)时,仍然将窗口范围之外的点设备事件(鼠标、触摸屏)发送给后面的窗口处理
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.LEFT | Gravity.TOP;
params.x = 0;
params.y = 0;
mWindowManager.addView(floatView, params);
ObjectAnimator animatorShow = ObjectAnimator.ofFloat(floatView, "alpha", 0.0f,1.0f);
animatorShow.setDuration(500);
animatorShow.start();
ObjectAnimator animatorHide = ObjectAnimator.ofFloat(floatView, "alpha", 1.0f,0.0f);
animatorHide.setDuration(500);
animatorHide.setStartDelay(3000);
animatorHide.start();
点击弹出框,跳转activity
floatView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainService.this, "点击淘口令", Toast.LENGTH_SHORT).show();
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(MainService.this, xxActivity.class);
startActivity(intent);
}
});
很简单的小功能,不过应用的实际过程应该还会出现一些待解决的小问题
好了,下面看下淘口令原理:ClipBoard笔记
Clipboard是Android提供的一个系统服务,它提供了一个全局的剪贴板,让文字、图片、数据,在多App间共享成为可能。
Clipboard的基本使用,分为三步:
获得ClipboardManager:
ClipboardManager mClipboardManager = mClipboardManager =
(ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
Copy:
ClipData mClipData;
String text = "hello world";
mClipData = ClipData.newPlainText("test", text);
mClipboardManager.setPrimaryClip(mClipData);
Paste:
ClipData clipData = mClipboardManager.getPrimaryClip();
ClipData.Item item = clipData.getItemAt(0);
String text = item.getText().toString();
搞定!
总结
以上所述是小编给大家介绍的Android仿淘口令复制弹出框功能(简答版),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!
- 算法——递推算法
- 算法——贝叶斯
- 机器学习算法实现解析——liblbfgs之L-BFGS算法
- 机器学习算法实现解析——libFM之libFM的训练过程之Adaptive Regularization
- 虚拟化平台cloudstack(2)——安装(上)
- 机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法
- 虚拟化平台cloudstack(3)——安装(下)
- 机器学习算法实现解析——libFM之libFM的训练过程概述
- 虚拟化平台cloudstack(4)——几个异常
- Golang语言 xml解析实例
- 机器学习算法实现解析——libFM之libFM的模型处理部分
- Go语言使用protobuf数据通信--师出同门,懂的人理解吧
- 虚拟化平台cloudstack(6)——使用maven:jetty调试
- 虚拟化平台cloudstack(7)——新版本的调试
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
- 浅谈laravel 5.6 安装 windows上使用composer的安装过程
- PhpStorm 如何优雅的调试Hyperf的方法步骤
- 在TP5数据库中四个字段实现无限分类的示例
- 详解Laravel设置多态关系模型别名的方式
- tp5修改(实现即点即改)
- 自定义Laravel (monolog)日志位置,并增加请求ID的实现
- PHP的Trait机制原理与用法分析
- 如何在centos8自定义目录安装php7.3
- 基于laravel belongsTo使用详解
- laravel model模型定义实现开启自动管理时间created_at,updated_at
- laravel ORM关联关系中的 with和whereHas用法
- thinkPHP事务操作简单案例分析
- php 多个变量指向同一个引用($b = &$a)用法分析
- 浅谈laravel5.5 belongsToMany自身的正确用法