将activity设置成窗口模式

有时候在项目中会遇到某些需求使得我们需要将activity设置成窗口模式,那么要怎样才能将activity设置成窗口模式呢?又要怎样解决设置这个窗口的大小以及设置窗口外部半透明效果等问题呢?很简单,你只要这样做:

1、首先在Manifest下将对应的activity的主题设置成android:Theme="@android:style/Theme.Dialog"完成这一步我们就将activity设置成窗口模式了
2、但是使用的时候我们会发现有一个问题,那就是点击窗口外部空白区域activity会finish,要解决这个问题我们需要在代码中调用这个方法:setFinishOnTouchOutside(false)。
3、接下来就是解决设置窗口大小和设置窗口外部半透明效果的问题了,需要在activity代码中添加如下代码:
/*设置窗口样式activity宽高start*/
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay();  //为获取屏幕宽、高
WindowManager.LayoutParams p = getWindow().getAttributes();  //获取对话框当前的参数值
p.height = (int) (d.getHeight() * 0.6);   //高度设置为屏幕的0.6
p.width = (int) (d.getWidth() * 0.7);    //宽度设置为屏幕的0.7
p.alpha = 1.0f;      //设置本身透明度
p.dimAmount = 0.5f;      //设置窗口外黑暗度
getWindow().setAttributes(p);
 /*设置窗口样式activity宽高end*/
需要注意的是以上代码必须在activity的setContentView方法后调用,否则不起作用,好了,完成以上几步就可以将activity设置成窗口模式了,是不是很简单呢



你可能感兴趣的:(activity)