您的位置:首页 > 移动开发 > Android开发

android WindowManager

2015-11-23 17:48 399 查看

项目中有一个到时锁屏的的功能,就是当到达特定时间后,程序弹出一个蒙层将界面锁住,用户不能进行其他操作  (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();
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
addWindow();
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// 移除windowview
if (mInView != null) {
windowManager.removeView(mInView);
}
}
});

}

}

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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: