开发者

Is there a way to determine if Android app is running full screen?

i was just wondering if there was a simple way to see if an application running on android is currently i开发者_如何学Pythonn full screen. is there a way to query android to see if you're currently in full screen mode or something like that?


Just to complete on Sigwann answer:

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


I guess Commonsware wanted to say getWindow().getAttributes() and not getWindow().getFlags(); since getFlags does not exist as far as I know. At least it is not in doc.

you need to read getWindow().getAttributes().flags, which is an int.

WindowManager.LayoutParams lp = getWindow().getAttributes();
int i = lp.flags;

FLAG_FULLSCREEN = 1024 according to android documentation. so your flag is the 11th bite of lp.flags

if this bite = 1, full screen is activated.


Following the info of Sigwann, here my code....

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

Simple, but works!


You can figure out if your Activity is running fullscreen via getWindow().getFlags().

However, if by "an application" you are referring to somebody else's application, then the answer is no.


There is a nice hack, using the absolute position of a View on screen. Just check the position of any top left view of your layout (can be invisible), if it's on position 0,0. Like this:

/**
 * 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;
}


you may use some thing like this;

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

and check for equality; hope this helps;


As of api11 there is now a way to detect that using a View.setOnSystemUiVisibilityChangeListener

The listener interface documentation notes the following:

Interface definition for a callback to be invoked when the status bar changes visibility. This reports global changes to the system UI state, not what the application is requesting.

I don't know if there's a way to do it prior to Honeycomb.


is there a way to query android to see if you're currently in full screen mode or something like that?

You can get if your app is running in full screen;:

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

i was just wondering if there was a simple way to see if an application running on android

if you are tryin to get if an application is running in full screen that´s not possible programatically only visually.


if you want to Respond to UI visibility changes for all apps including yours, use this code

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


Activity.hasWindowFocus() tells you if your own activity is visible to the user. But, as CommonsWare notes, it's much harder to tell if another activity is on the top of the stack. You can try querying the ActivityManager (e.g, ActivityManager.getProcessTasks() ), but its methods don't provide an exact answer for your question.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜