android打开一个窗口后如何设置屏幕背景变暗且不能点击
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android打开一个窗口后如何设置屏幕背景变暗且不能点击相关的知识,希望对你有一定的参考价值。
最近在android SystemUi中做了一个类似三星多窗口的东西,但是遇到了很多的问题,请教各位大神,如何在打开一个panel后,设置pad 屏幕变暗且不能点击,焦点只在这个panel上,关闭后焦点回到桌面,谢谢了!!
就像打开最近任务时一样的就可以
setFinishOnTouchOutside(false);
如何使背景视图变暗
【中文标题】如何使背景视图变暗【英文标题】:how to dim background view 【发布时间】:2014-05-27 10:57:04 【问题描述】:当我使用自定义模式视图控制器时尝试使背景视图变暗,我将背景颜色设置为灰色,不透明度为 0.5:
- (void)rulesTapped:(id)sender
RulesVC *rulesVC = [[RulesVC alloc] init];
self.view.backgroundColor = [UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:0.5];
rulesVC.modalPresentationStyle = UIModalPresentationCustom;
rulesVC.transitioningDelegate = self;
[self presentViewController:rulesVC animated:YES completion:nil];
但是当我在关闭模态 VC 时尝试将其设置回 whiteColor(或黄色)时,这种变暗保持在原位:
- (void) gotItTapped:(id)sender
[self.presentingViewController.view setBackgroundColor:[UIColor yellowColor]];
[self dismissViewControllerAnimated:YES completion:nil];
为什么?有没有办法在不添加另一个覆盖视图而只使用现有视图操作的情况下使背景变暗(然后移除变暗)视图?
【问题讨论】:
【参考方案1】:如果不向您的UIViewController
添加其他元素,我认为您无法实现它。我通常插入一个UIView
,它是setHidden:YES
,alpha 0.0f 和blackColor
作为backgroundColor
。显示某些东西时,我总是将其设置为 Hidden:NO
并将其动画设置为不透明度 0.6f。
[UIView animateWithDuration:0.5f animations:^
[self.view setAlpha:0.6];
];
这样它不会立即出现并且看起来更平滑。
【讨论】:
【参考方案2】:我实际上需要这个能够将其他一些 UIView 放入昏暗视图中,并且在此昏暗视图之外的每次点击都会关闭内置 UIView 和昏暗视图。我发现,为此最好的方法是模仿一个按钮,该按钮在单击时从超级视图中删除:
self.dimView = [UIButton buttonWithType:UIButtonTypeCustom];
self.dimView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2f];
self.dimView.frame = CGRectMake(0,
0,
self.view.frame.size.width,
self.view.frame.size.height);
[self.dimView addTarget:self
action:@selector(removeDimView)
forControlEvents:UIControlEventTouchUpInside];
【讨论】:
以上是关于android打开一个窗口后如何设置屏幕背景变暗且不能点击的主要内容,如果未能解决你的问题,请参考以下文章