我只是想知道是否有一种简单的方法来查看在Android上运行的应用程序当前是否全屏显示。有没有办法查询android,看看你目前是否处于全屏模式或类似的东西?
答案 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.
}
}
});
答案 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上运行的应用程序
如果您正在尝试获取应用程序是否以全屏方式运行,那只能以视觉方式无法通过编程实现。