成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Android如何判斷頁面是否全屏

瀏覽:4日期:2022-09-19 18:02:24

Android 想判斷 Activity 是否是全屏,網上找了些方法,看到有直接獲取 flags 和一個具體的值比較,并沒有用,其實分析下來也覺得應該不對。大多都是如何設置全屏和取消全屏,并沒有判斷是否全屏的方法。

其實全屏控制要么通過主題設置,要么代碼 addFlags,最終都會到 Window 的 setFlags 方法里,下面看源碼:

public void setFlags(int flags, int mask) { final WindowManager.LayoutParams attrs = getAttributes(); attrs.flags = (attrs.flags&~mask) | (flags&mask); mForcedWindowFlags |= mask; dispatchWindowAttributesChanged(attrs);}

主要的邏輯就是這一句:

attrs.flags = (attrs.flags&~mask) | (flags&mask)

是位運算,看一下 attrs 里可以設置的 flag 常量

public static final int FLAG_ALLOW_LOCK_WHILE_SCREEN_ON = 0x00000001;public static final int FLAG_DIM_BEHIND = 0x00000002;public static final int FLAG_BLUR_BEHIND = 0x00000004;public static final int FLAG_NOT_FOCUSABLE= 0x00000008;public static final int FLAG_NOT_TOUCHABLE= 0x00000010;public static final int FLAG_NOT_TOUCH_MODAL = 0x00000020;public static final int FLAG_TOUCHABLE_WHEN_WAKING = 0x00000040;public static final int FLAG_KEEP_SCREEN_ON= 0x00000080;public static final int FLAG_LAYOUT_IN_SCREEN = 0x00000100;public static final int FLAG_LAYOUT_NO_LIMITS = 0x00000200;public static final int FLAG_FULLSCREEN = 0x00000400;public static final int FLAG_FORCE_NOT_FULLSCREEN = 0x00000800;public static final int FLAG_DITHER = 0x00001000;public static final int FLAG_SECURE = 0x00002000;public static final int FLAG_SCALED = 0x00004000;public static final int FLAG_IGNORE_CHEEK_PRESSES = 0x00008000;public static final int FLAG_LAYOUT_INSET_DECOR = 0x00010000;public static final int FLAG_ALT_FOCUSABLE_IM = 0x00020000;public static final int FLAG_WATCH_OUTSIDE_TOUCH = 0x00040000;public static final int FLAG_SHOW_WHEN_LOCKED = 0x00080000;public static final int FLAG_SHOW_WALLPAPER= 0x00100000;public static final int FLAG_TURN_SCREEN_ON= 0x00200000;public static final int FLAG_DISMISS_KEYGUARD = 0x00400000;public static final int FLAG_SPLIT_TOUCH = 0x00800000;public static final int FLAG_HARDWARE_ACCELERATED = 0x01000000;public static final int FLAG_LAYOUT_IN_OVERSCAN = 0x02000000;public static final int FLAG_TRANSLUCENT_STATUS = 0x04000000;public static final int FLAG_TRANSLUCENT_NAVIGATION = 0x08000000;public static final int FLAG_LOCAL_FOCUS_MODE = 0x10000000;public static final int FLAG_SLIPPERY = 0x20000000;public static final int FLAG_LAYOUT_ATTACHED_IN_DECOR = 0x40000000;public static final int FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS = 0x80000000;

很明顯,這些十六進制值換成二進制的話,都只有一個 1,而且每個變量的 1 處于不同的位置,所以設置一個 flag 肯定就是將 flags 的對應位置設為 1,而 clearFlags 就是將對應位置設為 0。

比如 FLAG_FULLSCREEN 值為 0x00000400,換成二進制的話后面的位就是 0100 0000 0000,它控制的是從右向左數第 11 位。而 addFlags 時兩個參數 flags 和 mask 一樣。所以 (attrs.flags&~mask) | (flags&mask) 的 flags&mask 自己和自己作與運算,結果還是自己,而 ~mask 結尾為 1011 1111 1111,和原來的 flags 作與運算,則第 11 位肯定變成了 0,其它位和 1 作與運算,保持原樣,再和后面做或,則第 11 位又變成了 1,而且這次運算只會影響到第 11 位,其它位置不變,不管原來第 11 位是 0 還是 1,結果都會變成 1。

相似的,如果是 clearFlags,第一個參數變成 0,第二個參數是 FLAG_FULLSCREEN,這樣 (flags&mask) 必定為 0,只看前面,(attrs.flags&~mask) 這個運算第 11 位必為 0。

其實 (attrs.flags&~mask) | (flags&mask) 前面的與運算會將對應位置變成 0,然后看后面的與運算,后面算出結果對應位置是 1,那最終就是 1,后面算出是 0,那最終也是 0。而后面的控制就是 0 或者自己和自己作個與運算。

說了一大堆廢話,其實就是最基礎的位運算。那么想判斷是否全屏很簡單,只要看 flags 從右向左數第 11 位是 0 還是 1,只要與 FLAG_FULLSCREEN 做個邏輯與就行了,除了第 11 位,其它位都變成了 0。

判斷方法為:

if ( (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN) { // 是全屏}

到這里就結束啦.

以上就是Android如何判斷頁面是否全屏的詳細內容,更多關于Android 判斷頁面是否全屏的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
在线看国产一区| 日韩亚洲一区在线播放| 色综合天天综合给合国产| 欧美日韩免费一区二区三区 | 在线观看欧美黄色| 亚洲福利一二三区| 亚洲婷婷免费| 久久久久久久一区| 不卡视频一二三四| 日韩欧美三级在线| 国精产品一区一区三区mba视频| 玖玖视频精品| 亚洲国产精品影院| 亚洲高清毛片| 亚洲欧美在线aaa| 国内综合精品午夜久久资源| 国产亚洲精品aa午夜观看| aa级大片欧美| 久久综合九色综合欧美就去吻| 福利一区在线观看| 日韩视频永久免费| 国产一区二区三区电影在线观看 | 精品国产精品网麻豆系列| 懂色av一区二区在线播放| 在线播放日韩导航| 日韩国产精品大片| 色婷婷久久久综合中文字幕 | 久久在线视频| 五月激情综合网| 欧美亚洲一区二区三区| 亚洲愉拍自拍另类高清精品| 中国女人久久久| 亚洲一卡二卡三卡四卡| 午夜影院日韩| 天天操天天色综合| 91传媒视频在线播放| 免费成人结看片| 欧美日韩二区三区| 国产黄色91视频| 日韩精品一区二区三区视频播放| 国产91丝袜在线18| 欧美va在线播放| 91丝袜美女网| 国产欧美一二三区| 黄色国产精品| 亚洲美女屁股眼交| 免费永久网站黄欧美| 日韩激情av在线| 欧美亚洲另类激情小说| 极品少妇xxxx偷拍精品少妇| 制服丝袜日韩国产| 北条麻妃国产九九精品视频| 亚洲国产精品传媒在线观看| 伊人久久久大香线蕉综合直播| 亚洲激情综合网| 久久久一本精品99久久精品66| 免费成人av资源网| 精品久久久久一区| 国产综合色一区二区三区| 亚洲图片激情小说| 亚洲一区二区三区免费观看| 日韩av电影免费观看高清完整版 | 91香蕉视频在线| 国产精品久久久久久久久免费桃花| 影音先锋久久精品| 午夜亚洲福利老司机| 欧洲av在线精品| 成人在线视频一区二区| 中文字幕成人网| 亚洲永久免费| 九一九一国产精品| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产伦精一区二区三区| 久久免费看少妇高潮| 亚洲成人自拍视频| 日本在线不卡视频一二三区| 日韩一区二区高清| 国产精品分类| 日本视频在线一区| 欧美变态凌虐bdsm| 夜夜嗨网站十八久久| 精品中文字幕一区二区小辣椒| 久久蜜桃一区二区| 国产嫩草一区二区三区在线观看 | 亚洲性感美女99在线| 天天色 色综合| 精品国产伦一区二区三区免费| 国产综合激情| 日本中文在线一区| 久久色视频免费观看| 国产欧美日本在线| 国产精品一区二区视频| 国产精品久久久久久久蜜臀| 色噜噜狠狠色综合中国| 91一区二区在线| 亚洲第一成人在线| 日韩欧美国产一区在线观看| 亚洲欧洲三级| 狠狠网亚洲精品| 国产精品久久久久影院老司 | 综合久久国产九一剧情麻豆| 欧美色欧美亚洲另类二区| 波多野结衣精品在线| 亚洲激情网站免费观看| 911国产精品| 国产一级久久| av中文字幕一区| 午夜亚洲福利老司机| 久久久99精品久久| 在线观看日韩一区| 欧美午夜不卡| 国产一区999| 亚洲综合丝袜美腿| 久久新电视剧免费观看| 在线观看亚洲精品视频| 影音先锋国产精品| 成人免费视频app| 亚洲成人免费视频| 国产欧美精品区一区二区三区 | 1024成人网| 日韩欧美视频一区| 91久久精品一区二区三| 韩国欧美一区| 高清不卡一区二区在线| 日韩专区一卡二卡| 久久精品免视看| 欧美在线观看禁18| 99精品视频免费| 99久久久精品| 天堂一区二区在线| 国产精品久久久久国产精品日日| 在线播放日韩导航| 老鸭窝91久久精品色噜噜导演| 欧美一区成人| 国产精品一区在线观看你懂的| 亚洲成人动漫精品| 中文字幕中文在线不卡住| www国产精品av| 欧美日韩成人综合在线一区二区| 中国成人在线视频| 欧美日韩国产精品一卡| 国产精品一区二区无线| 日韩av高清在线观看| 亚洲欧美日韩在线| 国产欧美一区二区精品性色| 日韩久久精品一区| 欧美电影一区二区三区| 色婷婷av久久久久久久| 国产日韩亚洲| 国内视频一区| 欧美一区二区三区久久精品茉莉花| 国产精品一区二区黑丝| 男人的j进女人的j一区| 亚洲午夜精品在线| 亚洲欧美日韩国产手机在线 | 欧美一区二区视频在线观看2020| 久久激情久久| 一区二区三区国产盗摄| 欧美日韩高清在线一区| 99精品视频在线观看免费| 国产一区二区调教| 蜜臀av一级做a爰片久久| 亚洲第一在线综合网站| 亚洲欧美在线另类| 日本一区二区久久| 777a∨成人精品桃花网| 欧美丝袜丝交足nylons| 色乱码一区二区三区88| 久久字幕精品一区| 久久亚洲一区| 美女国产一区| 西西人体一区二区| 午夜一区在线| 老牛国产精品一区的观看方式| 亚洲欧美日韩综合国产aⅴ| 1024亚洲| 亚洲精品韩国| 亚洲精品自在在线观看| 伊人久久亚洲影院| 亚洲性图久久| 国内精品嫩模av私拍在线观看| 国产综合亚洲精品一区二| 国产精品v日韩精品v欧美精品网站 | 日韩亚洲欧美在线观看| 欧美精品一二三区| 91精品国产欧美日韩| 欧美一区二区三区四区在线观看 | 亚洲国产日韩精品| 午夜久久福利影院| 日韩国产精品大片| 麻豆精品久久精品色综合| 日本欧美一区二区| 国模大尺度一区二区三区| 国产米奇在线777精品观看| 国产成人一区在线| 成人一级片在线观看| 99国产一区二区三精品乱码| 91日韩在线专区| 激情综合亚洲| 亚洲一区国产|