view位置小坑

getLocationOnScreen() will get the location based on the phone screen.

getLocationInWindow() will get the location based on the activity window. 水滴屏獲取位置用這種

|--phone screen--------------------- |
|--------status bar---------------------|
|                                                      |
|-------------------------------------------|
|--------activity window------ -------|
|                                                      |
|                                                      |
|                                                      |
|                                                      |
|                                                      |
|                                                      |
|-------------------------------------------|

2.statusBarHeight會隨著有無通知改變

3.是否有劉海屏 水滴屏

 /**
     * 是否有劉海屏
     *
     * @return
     */
    public static boolean hasNotchInScreen(Activity activity) {
        if (activity == null || activity.isFinishing()) return false;

        boolean result = false;

        // 通過其他方式判斷是否有劉海屏  目前官方提供有開發(fā)文檔的就 小米,vivo擦囊,華為(榮耀)蕴轨,oppo
        String manufacturer = Build.MANUFACTURER;

        Log.i("cchen", "manufacturer " + manufacturer);
        if (TextUtils.isEmpty(manufacturer)) {
            return false;
        } else if (manufacturer.equalsIgnoreCase("HUAWEI")) {
            result = hasNotchHw(activity);
        } else if (manufacturer.equalsIgnoreCase("xiaomi")) {
            result = hasNotchXiaoMi(activity);
        } else if (manufacturer.equalsIgnoreCase("oppo")) {
            result = hasNotchOPPO(activity);
        } else if (manufacturer.equalsIgnoreCase("vivo")) {
            result = hasNotchVIVO(activity);
        }

        if(result) return true;

        // android  P 以上有標(biāo)準(zhǔn) API 來判斷是否有劉海屏
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            DisplayCutout displayCutout = activity.getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
            Log.i("cchen", "displayCutout " + displayCutout);
            if (displayCutout != null) {
                // 說明有劉海屏
                return true;
            }
        }
        return false;
    }

    /**
     * 判斷vivo是否有劉海屏
     * https://swsdl.vivo.com.cn/appstore/developer/uploadfile/20180328/20180328152252602.pdf
     *
     * @param activity
     * @return
     */
    private static boolean hasNotchVIVO(Activity activity) {
        try {
            Class<?> c = Class.forName("android.util.FtFeature");
            Method get = c.getMethod("isFeatureSupport", int.class);
            return (boolean) (get.invoke(c, 0x20));
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 判斷oppo是否有劉海屏
     * https://open.oppomobile.com/wiki/doc#id=10159
     *
     * @param activity
     * @return
     */
    private static boolean hasNotchOPPO(Activity activity) {
        return activity.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism");
    }

    /**
     * 判斷xiaomi是否有劉海屏
     * https://dev.mi.com/console/doc/detail?pId=1293
     *
     * @param activity
     * @return
     */
    private static boolean hasNotchXiaoMi(Activity activity) {
        try {
            Class<?> c = Class.forName("android.os.SystemProperties");
            Method get = c.getMethod("getInt", String.class, int.class);
            return (int) (get.invoke(c, "ro.miui.notch", 0)) == 1;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 判斷華為是否有劉海屏
     * https://devcenter-test.huawei.com/consumer/cn/devservice/doc/50114
     *
     * @param activity
     * @return
     */
    private static boolean hasNotchHw(Activity activity) {

        try {
            ClassLoader cl = activity.getClassLoader();
            Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");
            Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");
            return (boolean) get.invoke(HwNotchSizeUtil);
        } catch (Exception e) {
            return false;
        }
    }

4.Button在約束布局中擋住其他view锡溯,是因為button自帶elevation,在Z軸上高于其他view魏割。
Button和TextView的不同
Button 有背景,點擊,按下都有相應(yīng)的效果眨八。
可點擊。
默認(rèn)有焦點左电。
樣式不同廉侧,比如顏色页响,位置等

5.removeView由于有LayoutTransition而刪除失敗

6.彈出dialog時,window不退出全屏段誊,虛擬鍵不彈出
在show 之前 闰蚕,getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市连舍,隨后出現(xiàn)的幾起案子陪腌,更是在濱河造成了極大的恐慌,老刑警劉巖烟瞧,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诗鸭,死亡現(xiàn)場離奇詭異,居然都是意外死亡参滴,警方通過查閱死者的電腦和手機(jī)强岸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砾赔,“玉大人蝌箍,你說我怎么就攤上這事”┬模” “怎么了妓盲?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長专普。 經(jīng)常有香客問我悯衬,道長,這世上最難降的妖魔是什么檀夹? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任筋粗,我火速辦了婚禮,結(jié)果婚禮上炸渡,老公的妹妹穿的比我還像新娘娜亿。我一直安慰自己,他們只是感情好蚌堵,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布买决。 她就那樣靜靜地躺著,像睡著了一般吼畏。 火紅的嫁衣襯著肌膚如雪督赤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天宫仗,我揣著相機(jī)與錄音够挂,去河邊找鬼。 笑死藕夫,一個胖子當(dāng)著我的面吹牛孽糖,可吹牛的內(nèi)容都是我干的枯冈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼办悟,長吁一口氣:“原來是場噩夢啊……” “哼尘奏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起病蛉,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤炫加,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铺然,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俗孝,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年魄健,在試婚紗的時候發(fā)現(xiàn)自己被綠了赋铝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡沽瘦,死狀恐怖革骨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情析恋,我是刑警寧澤良哲,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站助隧,受9級特大地震影響筑凫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喇颁,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一漏健、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧橘霎,春花似錦、人聲如沸殖属。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洗显。三九已至外潜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挠唆,已是汗流浹背处窥。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留玄组,地道東北人滔驾。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓谒麦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哆致。 傳聞我的和親對象是個殘疾皇子绕德,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348