android WindowManager

来源:互联网 发布:网络平台承担连带责任 编辑:程序博客网 时间:2024/06/16 01:45

项目中有一个到时锁屏的的功能,就是当到达特定时间后,程序弹出一个蒙层将界面锁住,用户不能进行其他操作  (ps:按home键和back键蒙层也还在),除非输入密码或按规定操作,才可移除蒙层。

 

 现将关键的使用代码简化贴出以供参考:

public class MainActivity extends Activity {private WindowManager.LayoutParams param;private WindowManager windowManager;private RelativeLayout mInView;private Button btn;private void initView() {windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);param = new WindowManager.LayoutParams();LayoutInflater inflater = LayoutInflater.from(getApplicationContext());// 加载需要的XML布局文件mInView = (RelativeLayout) inflater.inflate(R.layout.activity_main,null, false);btn = (Button) mInView.findViewById(R.id.btn);}public void addWindow() {// param.format = PixelFormat.RGBA_8888; // 背景透明param.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;// 等于2003,意思是:系统提示,它总是出现在应用程序窗口之上// param.gravity = 51;// 让该window后所有的东西都成暗淡(dim)param.format = 1;// param.alpha = 0.9f;param.type = 0x00000200;// 允许窗口扩展到屏幕之外,相当于满屏作用// param.flags = 0x00000200;if (windowManager == null)windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);// 获取WindowManager服务:try {windowManager.addView(mInView, param);// 添加view到屏幕} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();addWindow();btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// 移除windowviewif (mInView != null) {windowManager.removeView(mInView);}}});}}

 其中关于windowmanager的相关信息网上有很多介绍,这里不再赘述。大家可以根据自身的实际情况对WindowManager.LayoutParams参数进行设置来满足不同需求。

 

原创粉丝点击