为什么我的背景颜色不会改变暂停?

时间:2014-06-03 14:13:54

标签: android android-layout android-activity android-lifecycle

我正在尝试更改多任务按钮似乎在查看最近的应用时显示的小“截图”的颜色。我尝试通过改变颜色来做到这一点:

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();
    }

}

但现在我完全糊涂了。在我回到它之前,颜色根本不会变成蓝色。怎么可能?睡眠前的颜色变化明显()。

1 个答案:

答案 0 :(得分:0)

好的,根据您在评论中解释的内容,您可以通过设置标记WindowManager.LayoutParams.FLAG_SECURE来避免屏幕截图显示您的布局,而是显示黑色背景。此标志将窗口内容视为安全,防止其出现在屏幕截图中或在非安全显示器上查看。

要使用它,请在Activity onCreate()

中进行调用
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
            WindowManager.LayoutParams.FLAG_SECURE);

请注意,您必须在setContentView()之前调用它。