Android WindowManager詳解
阿新 • • 發佈:2019-01-25
public class WindowService extends Service implements OnClickListener { private WindowManager wManager;// 視窗管理者 private WindowManager.LayoutParams mParams;// 視窗的屬性 private MyView myView; private boolean flag = true; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stubreturn null; } @Override public void onCreate() { // TODO Auto-generated method stub wManager = (WindowManager) getApplicationContext().getSystemService( Context.WINDOW_SERVICE); mParams = new WindowManager.LayoutParams(); mParams.type= WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;// 系統提示window mParams.format = PixelFormat.TRANSLUCENT;// 支援透明 //mParams.format = PixelFormat.RGBA_8888; mParams.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;// 焦點 mParams.width = 490;//視窗的寬和高 mParams.height = 160; mParams.x= 0;//視窗位置的偏移量 mParams.y = 0; //mParams.alpha = 0.1f;//視窗的透明度 myView = new MyView(this); myView.setOnClickListener(this); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub if (flag) { flag = false; wManager.addView(myView, mParams);//新增視窗 } return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { // TODO Auto-generated method stub if (myView.getParent() != null) wManager.removeView(myView);//移除視窗 super.onDestroy(); } @Override public void onClick(View v) { // TODO Auto-generated method stub if (v.equals(myView)) { flag = true; if (myView.getParent() != null) wManager.removeView(myView);//移除視窗 } } }