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

匿名 (未验证) 提交于 2019-12-03 00:03:02


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

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

转载于:https://my.oschina.net/wuhaoyu/blog/607831

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!