日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android如何判斷頁面是否全屏

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

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

其實全屏控制要么通過主題設(shè)置,要么代碼 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 里可以設(shè)置的 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 處于不同的位置,所以設(shè)置一個 flag 肯定就是將 flags 的對應(yīng)位置設(shè)為 1,而 clearFlags 就是將對應(yīng)位置設(shè)為 0。

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

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

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

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

判斷方法為:

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

到這里就結(jié)束啦.

以上就是Android如何判斷頁面是否全屏的詳細內(nèi)容,更多關(guān)于Android 判斷頁面是否全屏的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本欧美一区二区| 999国产精品999久久久久久| 偷拍欧美精品| 国产精品免费看| 日本va欧美va精品发布| 另类激情亚洲| 日韩国产一二三区| 精品久久一区| 伊人精品在线| 日本va欧美va精品发布| 精品少妇av| 激情自拍一区| 日本在线不卡视频| 黑人精品一区| 亚洲欧洲一区| 国产情侣一区在线| 欧美日韩尤物久久| 老牛影视一区二区三区| 国产剧情一区| 欧美亚洲激情| 一区二区电影| 欧美好骚综合网| 亚洲欧美日韩综合国产aⅴ| 国产欧美综合一区二区三区| 国产在线|日韩| 日本在线视频一区二区| 日产精品一区二区| 亚洲一区国产一区| 欧美aⅴ一区二区三区视频| 桃色一区二区| 青青草精品视频| 99成人在线视频| 国产精品自在| 亚洲欧美日本视频在线观看| 久久精品三级| 国产女优一区| 日产精品一区二区| 日本不卡高清| 成人av二区| 成人在线超碰| 亚洲综合激情在线| 日韩免费久久| 国产人成精品一区二区三| 九九久久婷婷| 91免费精品| 国产乱人伦丫前精品视频| 中文亚洲欧美| 中文字幕在线视频久| 无码日韩精品一区二区免费| 日本在线精品| 国产精品一区毛片| 精品91久久久久| 国产欧美一区二区三区精品酒店| 日韩av影院| 亚洲一区免费| 欧美粗暴jizz性欧美20| 国产精品国产一区| 欧美亚洲免费| 日韩中出av| 老鸭窝亚洲一区二区三区| 久久精品导航| 日韩不卡一区| 久久亚洲黄色| 国产乱子精品一区二区在线观看 | 亚洲大全视频| 成人污污视频| 精品视频一区二区三区在线观看 | 国产极品嫩模在线观看91精品| 免费一区二区视频| 五月综合激情| 国产伊人精品| 国产精品13p| 久久a爱视频| 国产精品黄网站| 欧美亚洲tv| 日韩精品成人在线观看| 综合国产视频| 亚洲精品乱码| 色8久久久久| 日韩国产一区二| 91精品丝袜国产高跟在线| 日本一区二区三区中文字幕| 亚洲最大av| 亚洲1区在线观看| 日本不卡高清| 青草av.久久免费一区| 免费看日韩精品| 国产精品日韩久久久| 精品1区2区3区4区| 久久国产66| 中文字幕日本一区| 日韩一区二区三免费高清在线观看| 爽爽淫人综合网网站| 免费久久99精品国产自在现线| 欧美日韩国产探花| 亚洲一区二区三区四区五区午夜| 国产亚洲在线观看| 丝袜a∨在线一区二区三区不卡| 久久国产高清| 日韩精品一区二区三区中文在线| 日韩av中文字幕一区| 欧美午夜三级| 久久久国产精品入口麻豆| 福利一区二区三区视频在线观看| 国产不卡一区| 国产精品99免费看| 免费久久99精品国产| 日精品一区二区三区| 国产精品永久| 91一区二区三区四区| 久久久国产亚洲精品| 黄色在线一区| 日本欧美一区二区在线观看| 国产精品手机在线播放| 成人在线免费观看91| 蜜臀av免费一区二区三区| 亚洲免费网址| 日韩福利视频网| 国际精品欧美精品| 免费视频一区三区| 日本成人中文字幕| 高清精品久久| 欧美特黄视频| 国产日韩中文在线中文字幕| 国产一区二区三区日韩精品| 欧美日韩中文一区二区| 亚洲综合福利| 成人在线视频免费| 国产一区导航| 麻豆视频一区| 国产精品视区| 国产欧美日韩视频在线 | 日日摸夜夜添夜夜添国产精品| 国产精品免费大片| 日韩精品一卡| 日本电影久久久| 国产网站在线| 免费日韩av片| 精品亚洲a∨一区二区三区18| 激情综合亚洲| 国产精品嫩模av在线| 日韩啪啪电影网| 中文字幕一区二区三区在线视频| 老鸭窝一区二区久久精品| 国产自产自拍视频在线观看| 日韩在线一二三区| 福利一区二区| 日本不卡视频一二三区| 欧美日韩尤物久久| 7777精品| 婷婷综合五月| 成人午夜毛片| 午夜久久av| 免费精品国产的网站免费观看| 国产精品亚洲四区在线观看 | 国产毛片精品| 播放一区二区| 国产丝袜一区| 国产视频一区三区| 四季av一区二区凹凸精品| 日本亚洲不卡| 亚洲电影在线| 精品亚洲成人| 97成人在线| 99riav1国产精品视频| 成人国产精品一区二区网站| 少妇精品久久久| 欧美 日韩 国产一区二区在线视频| 国产乱码精品一区二区三区亚洲人| 亚洲黄色影院| 久久国产直播| 欧美国产另类| 午夜精品影视国产一区在线麻豆| 91精品精品| 精品久久久中文字幕| **爰片久久毛片| 中文字幕日本一区二区| 欧美在线影院| 尤物tv在线精品| 在线看片国产福利你懂的| 欧美激情视频一区二区三区免费| 一本一道久久a久久| 99亚洲视频| 99久久精品费精品国产| 中文在线资源| 日本一区二区免费高清| 日韩精品欧美大片| 天堂成人国产精品一区| 久久久久久美女精品| 色综合五月天| 成人精品国产亚洲| 成人国产精品久久| 精品视频97| 国产一区2区| 国产成人免费av一区二区午夜| 精品中文字幕一区二区三区四区| 国产伦理久久久久久妇女| 欧美日韩一区二区三区不卡视频| 日韩毛片网站| 国产欧美三级|