android 高仿淘口令,[Android开发]简单版仿淘口令复制弹出框功能

40f4d8dcca6616290a0ef2a571b74943.png

使用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);

}

});

很简单的小功能,不过应用的实际过程应该还会出现一些待解决的小问题

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值