【问题标题】:Activity doesn't show in full screen活动未全屏显示
【发布时间】:2012-03-12 16:24:16
【问题描述】:

我在我的项目中定义了一个新 Activity,但我在使用全屏时遇到了一些问题。

我在清单文件中这样定义:

<activity android:name=".Test"
     android:launchMode="singleInstance" android:screenOrientation="portrait"
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
     .............
>

如果我从另一个活动开始活动,我会得到所需的全屏。问题是当我从 BroadcastReceiver 启动此活动时 - 我需要在 BroadcastReceiver 中打开此活动,如下所示:

public void onReceive(Context context, Intent intent) {
     Intent test = new Intent(context, Test.class);
     test.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     context.startActivity(test);
}

我也试过这样:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.test);
}

如果活动从我的 BroadcastReciever 开始,则不会全屏显示。

为什么我在这种情况下没有全屏显示?有什么方法可以在Activity创建可见后请求全屏?

【问题讨论】:

    标签: android android-activity android-intent fullscreen


    【解决方案1】:

    我喜欢这个问题。我省略了一种在问题文本中添加的方法-我认为它不相关。因为我希望这个活动拦截(不反应)主页按钮按下,因此我重写 onAttachedToWindow() 方法,如下所示:

    public void onAttachedToWindow() {
        getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();
    }
    

    这就是问题所在。有时,正因为如此,我的活动没有全屏显示。为了解决这个问题,我不知道这是否是最好的方法,我在这段代码中添加了延迟,如下所示:

    public void onAttachedToWindow() {
        handler.sendEmptyMessageDelayed(100,100);
        super.onAttachedToWindow();
    }
    

    和处理程序:

    public boolean handleMessage(Message msg) {
        getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    }
    

    这解决了我的问题。我希望这对某人有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多