有没有办法确定Android应用是否全屏运行?

时间:2011-01-10 01:06:43

标签: android

我只是想知道是否有一种简单的方法来查看在Android上运行的应用程序当前是否全屏显示。有没有办法查询android,看看你目前是否处于全屏模式或类似的东西?

10 个答案:

答案 0 :(得分:11)

刚刚完成Sigwann的答案:

boolean fullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0;
boolean forceNotFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0;
boolean actionbarVisible = getActionBar().isShowing();

答案 1 :(得分:10)

我想Commonsware想说getWindow()。getAttributes()而不是getWindow()。getFlags();因为据我所知,getFlags不存在。至少它不在doc。

你需要读取getWindow()。getAttributes()。flags,这是一个int。

WindowManager.LayoutParams lp = getWindow().getAttributes();
int i = lp.flags;
根据android文档,

FLAG_FULLSCREEN = 1024。 所以你的旗帜是lp.flags的第11口

如果此咬合= 1,则激活全屏。

答案 2 :(得分:7)

按照Sigwann的信息,这里是我的代码......

public boolean isFullScreen() {
    int flg = getWindow().getAttributes().flags;
    boolean flag = false;       
    if ((flg & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN) {
        flag = true;
    }
    return flag;
}

简单,但有效!

答案 3 :(得分:5)

您可以通过Activity确定getWindow().getFlags()是否全屏运行。

但是,如果通过“申请”指的是其他人的申请,那么答案就是否定。

答案 4 :(得分:2)

从api11开始,现在有一种方法可以使用View.setOnSystemUiVisibilityChangeListener

来检测

侦听器接口文档包含以下内容:

  

状态栏更改可见性时要调用的回调的接口定义。这会报告系统UI状态的全局更改,而不是应用程序请求的更改。

我不知道在Honeycomb之前是否有办法做到这一点。

答案 5 :(得分:1)

你可以使用这样的东西;

findViewById(android.R.id.content).getHeight();
    getResources().getDisplayMetrics().heightPixels;

并检查是否平等; 希望这会有所帮助;

答案 6 :(得分:1)

如果您要响应UI可见性更改,包括您所有应用程序,请使用此代码

View decorView = getWindow().getDecorView();//you can also use findViewById to get the view
decorView.setOnSystemUiVisibilityChangeListener
        (new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        // Note that system bars will only be "visible" if none of the
        // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
        if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
            // TODO: The system bars are visible. Make any desired
            // adjustments to your UI, such as showing the action bar or
            // other navigational controls.
        } else {
            // TODO: The system bars are NOT visible. Make any desired
            // adjustments to your UI, such as hiding the action bar or
            // other navigational controls.
        }
    }
}); 

source of info

答案 7 :(得分:0)

Activity.hasWindowFocus()会告诉您自己的活动是否对用户可见。但是,正如CommonsWare所指出的那样,要判断另一个活动是否位于堆栈顶部更加困难。您可以尝试查询ActivityManager(例如ActivityManager.getProcessTasks()),但其方法无法为您的问题提供准确的答案。

答案 8 :(得分:0)

有一个很好的黑客,使用屏幕上View的绝对位置。如果它位于0,0位置,只需检查布局左上角视图的位置(可以是不可见的)。像这样:

/**
 * Check if fullscreen is activated by a position of a top left View
 * @param topLeftView View which position will be compared with 0,0
 * @return
 */
public static boolean isFullscreen(View topLeftView) {
    int location[] = new int[2];
    topLeftView.getLocationOnScreen(location);
    return location[0] == 0 && location[1] == 0;
}

答案 9 :(得分:0)

  

是否可以查询android以查看您当前是否已满   屏幕模式之类的?

如果您的应用程序以全屏模式运行,您将获得以下信息:

boolean isFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0;
  

我只是想知道是否有一种简单的方法来查看   在android上运行的应用程序

如果您正在尝试获取应用程序是否以全屏方式运行,那只能以视觉方式无法通过编程实现。