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

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

Android如何判斷頁面是否全屏

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

Android 想判斷 Activity 是否是全屏,網(wǎng)上找了些方法,看到有直接獲取 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,它控制的是從右向左數(shù)第 11 位。而 addFlags 時兩個參數(shù) 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,第一個參數(shù)變成 0,第二個參數(shù)是 FLAG_FULLSCREEN,這樣 (flags&mask) 必定為 0,只看前面,(attrs.flags&~mask) 這個運算第 11 位必為 0。

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

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

判斷方法為:

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

到這里就結束啦.

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

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美精品影院| av综合电影网站| 午夜在线视频一区二区区别| 久久不卡日韩美女| 久久99影视| 精品香蕉视频| 精品一区二区三区中文字幕视频 | 麻豆久久久久久| 麻豆传媒一区二区三区| 欧美成人精品一级| 美女av一区| 精品国产免费人成网站| 亚洲精品在线影院| 国产精品av久久久久久麻豆网| 免费av一区二区三区四区| 欧美福利专区| 丝袜美腿高跟呻吟高潮一区| 男人的天堂亚洲一区| 亚洲乱码久久| 国产精品男女| 国模精品一区| 成人久久一区| 99亚洲精品| 日韩极品在线观看| 久久99性xxx老妇胖精品| 成人在线黄色| 国产精品99免费看| 一二三区精品| 国产精久久一区二区| 成人精品久久| 亚洲五月婷婷| 少妇精品久久久一区二区| 欧美日韩黄网站| 国产一区二区三区黄网站| av高清一区| 美女网站久久| 国产精品高清一区二区| 欧洲精品一区二区三区| 日韩中文字幕av电影| 国产精品视频一区二区三区四蜜臂| 久久久久久网| 夜夜精品视频| 国产精品18| 午夜久久久久| 日本在线不卡视频| 超碰99在线| 日韩专区欧美专区| 麻豆精品一区二区综合av| 久久精品不卡| 日韩激情啪啪| 欧美成人基地 | 国产精品日韩精品中文字幕| 欧美成人a交片免费看| 久久亚洲欧洲| 精品网站999| 亚洲资源av| 久久91视频| 久久亚洲精品伦理| 高清不卡亚洲| 日韩av二区在线播放| 精品国产不卡| 先锋亚洲精品| 日韩av自拍| 免费观看在线综合色| 精品国产一区二| 亚洲欧美日韩国产综合精品二区| 老司机免费视频一区二区| 欧美专区一区二区三区| 欧美成人aaa| 国产精品普通话对白| 欧美激情久久久久久久久久久| 一区久久精品| 日本一区二区高清不卡| 亚洲a成人v| 日韩午夜电影| 国内一区二区三区| 日韩精品高清不卡| 欧美sss在线视频| 国产精品v一区二区三区| 99国产精品99久久久久久粉嫩| 高清久久一区| 久久精品99国产精品| 日韩一级网站| 色婷婷狠狠五月综合天色拍| 国产精品66| 亚洲狼人精品一区二区三区| 日韩精品麻豆| 九九九精品视频| 日本成人在线视频网站| 亚洲欧美日本日韩| 久久精品成人| 精品国产a一区二区三区v免费| 日本在线不卡视频一二三区| 狠狠久久婷婷| 国产精品伦一区二区| 99国产精品99久久久久久粉嫩| 国产成人精品三级高清久久91| 日本午夜精品| 在线观看亚洲精品福利片| 亚洲va在线| 激情久久99| 牛牛精品成人免费视频| 亚洲人www| 性色一区二区| 一区福利视频| 欧美午夜精品一区二区三区电影| 国产精品国产三级国产在线观看| 国产精品中文| 97久久超碰| 蜜桃视频在线观看一区二区| 亚洲经典在线| 99精品视频精品精品视频| 韩国一区二区三区视频| 久久不卡日韩美女| 国产精品s色| 国产欧美在线| 国产精品三级| 国产精品1区| 欧美精品97| 国产精品久久久久av蜜臀| 97精品久久| 久久狠狠久久| 国产精品久久久久av蜜臀| 欧美精品国产白浆久久久久| 欧美一区成人| 欧美一区二区三区久久精品| 久久国内精品自在自线400部| 国产日韩一区| 久久久夜精品| 激情欧美一区| 在线亚洲观看| 久久高清国产| 亚洲欧洲美洲国产香蕉| 日本在线不卡视频| 国产香蕉精品| 欧美视频久久| 国产黄色一区| 欧美韩日一区| 成人久久久久| 日韩一区二区免费看| 久久亚洲欧洲| 天堂俺去俺来也www久久婷婷| 欧美日本一区| 国产不卡一区| 久久久精品网| 最新亚洲一区| 日本中文字幕一区二区| 国产精品sss在线观看av| 精品伊人久久| 神马日本精品| 尹人成人综合网| 亚洲麻豆一区| 国产精品久久久久久久久免费高清 | 欧美日韩视频| 久久先锋影音| 国产精品片aa在线观看| 国产自产自拍视频在线观看| 国产在线成人| 视频一区在线播放| 欧美久久精品| 国产自产自拍视频在线观看| 日韩一级不卡| 国产精品s色| 在线视频观看日韩| 视频精品一区| 国内精品伊人| 亚洲欧美日本日韩| 国产高清精品二区| 国产精品av一区二区| 日韩av中文字幕一区| 国产aa精品| 国产精品日韩| 免费看久久久| 亚洲国内精品| 亚州精品视频| 狠狠躁少妇一区二区三区| 午夜精品网站| 国产精品1区| 欧美特黄一级| 国产精品久久777777毛茸茸| 在线视频观看日韩| 国产精品一区二区精品视频观看| 日本精品影院| 日本aⅴ亚洲精品中文乱码| 国产一区二区三区四区| 国产精品毛片一区二区三区| 国产精品白丝久久av网站| 蜜桃一区二区三区| 国产亚洲一区二区三区啪| 91精品国产成人观看| 欧美亚洲一级| 国产一区二区中文| 国产精品亚洲欧美一级在线| 欧美日韩水蜜桃| 国产精品一区二区三区av| 免费视频一区三区| 国产精品a久久久久| 亚洲作爱视频| 在线天堂中文资源最新版| 亚洲一区二区三区久久久|