我正在尝试更改多任务按钮似乎在查看最近的应用时显示的小“截图”的颜色。我尝试通过改变颜色来做到这一点:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onPause() {
getWindow().getDecorView().getRootView().setBackgroundColor(Color.BLUE);
super.onPause();
}
}
这不起作用。使用上面的代码,我可以看到颜色变为蓝色,但屏幕截图不显示蓝色。我想如果我放一点延迟(这完全是纯粹的概念。我知道如果你故意推迟离开活动,用户会很生气)然后屏幕截图会显示蓝色。所以我做了:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onPause() {
getWindow().getDecorView().getRootView().setBackgroundColor(Color.BLUE);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.onPause();
}
}
但现在我完全糊涂了。在我回到它之前,颜色根本不会变成蓝色。怎么可能?睡眠前的颜色变化明显()。
答案 0 :(得分:0)
好的,根据您在评论中解释的内容,您可以通过设置标记WindowManager.LayoutParams.FLAG_SECURE
来避免屏幕截图显示您的布局,而是显示黑色背景。此标志将窗口内容视为安全,防止其出现在屏幕截图中或在非安全显示器上查看。
要使用它,请在Activity
onCreate()
:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
请注意,您必须在setContentView()
之前调用它。