鴻洋AutoLayout代碼分析(二):獲取Manifest中的值


簡(jiǎn)單查找

從AndroidManifest.xml中去取值,自己覺(jué)得應(yīng)該和 PackageManager 或 Manifest 有關(guān)
(Manifest 簡(jiǎn)單是一個(gè)容器魄懂,存儲(chǔ)和讀寫(xiě)鍵值對(duì)用的类浪, PackageManager 是抽象類,自己還沒(méi)有了解過(guò)對(duì)應(yīng)的實(shí)現(xiàn))

因?yàn)樯弦还?jié)有提到過(guò)唯一的Activity寇蚊,AutoLayoutActivity
我們 寫(xiě)一個(gè)引用 PackageManager pm折联,
找一下對(duì)應(yīng)的 useages 使用

Paste_Image.png

我們可以找到對(duì)應(yīng)的地方
也就是 AutoLayoutConifg 類的颓屑, getMetaData(Context context) 私有方法
(AutoLayoutConifg 拼寫(xiě)錯(cuò)位了, 應(yīng)該是 大神寫(xiě)的比較急耿焊, 按快了造成的)


Paste_Image.png

AutoLayoutConifg 類

(AutoLayoutConifg 拼寫(xiě)錯(cuò)位了揪惦, 應(yīng)該是 大神寫(xiě)的比較急, 按快了造成的)
我們先一起看一下大體結(jié)構(gòu)
在android studio中的左側(cè)罗侯,點(diǎn)擊 Structure
點(diǎn)擊 【P】 和 【鎖】
(具體含有如果不清楚器腋,可以參考 http://www.reibang.com/p/739c8414109d

Paste_Image.png

再參考類的前面部分

Paste_Image.png

除了那個(gè)boolean 的屬性
我們可以大體看見(jiàn)
4個(gè)get方法,其實(shí)就是 獲取對(duì)應(yīng)的 4個(gè)屬性值
也就是對(duì)應(yīng)的屏幕寬高钩杰, 設(shè)計(jì)的寬高

再看對(duì)應(yīng)的靜態(tài)對(duì)象蒂培,私有構(gòu)造,instance方法
我們可以知道是對(duì)應(yīng)的 餓漢單例

去掉先說(shuō)的 榜苫,暫時(shí)不考慮的 useDeviceSize() 方法以外
還有 init(Context context) , getMetaData(Context context)护戳,checkParams()
這3個(gè)方法


其他3個(gè)方法
checkParams()

    public void checkParams() {
        if (mDesignHeight <= 0 || mDesignWidth <= 0) {
            throw new RuntimeException(
                    "you must set " + KEY_DESIGN_WIDTH + " and " + KEY_DESIGN_HEIGHT + "  in your manifest file.");
        }
    }

我們可以知道是對(duì)應(yīng)的 拋異常方法,
也就是 如果 mDesignHeight <= 0 || mDesignWidth <= 0
主動(dòng)拋異常

init(Context context)

    public void init(Context context) {
        getMetaData(context);

        int[] screenSize = ScreenUtils.getScreenSize(context, useDeviceSize);
        mScreenWidth = screenSize[0];
        mScreenHeight = screenSize[1];
        L.e(" screenWidth =" + mScreenWidth + " ,screenHeight = " + mScreenHeight);
    }

調(diào)用getMetaData(context);后
依賴 ScreenUtils類垂睬, 獲取 mScreenWidth 和 mScreenHeight媳荒。
并且賦值

getMetaData(Context context)

    private void getMetaData(Context context) {
        PackageManager packageManager = context.getPackageManager();
        ApplicationInfo applicationInfo;
        try {
            applicationInfo = packageManager.getApplicationInfo(context
                    .getPackageName(), PackageManager.GET_META_DATA);
            if (applicationInfo != null && applicationInfo.metaData != null) {
                mDesignWidth = (int) applicationInfo.metaData.get(KEY_DESIGN_WIDTH);
                mDesignHeight = (int) applicationInfo.metaData.get(KEY_DESIGN_HEIGHT);
            }
        } catch (PackageManager.NameNotFoundException e) {
            throw new RuntimeException(
                    "you must set " + KEY_DESIGN_WIDTH + " and " + KEY_DESIGN_HEIGHT + "  in your manifest file.", e);
        }

        L.e(" designWidth =" + mDesignWidth + " , designHeight = " + mDesignHeight);
    }

依賴 PackageManager 和 ApplicationInfo 這2個(gè)類去獲得
AndroidManifest.xml文件中,對(duì)應(yīng)的 meta-data 值

Paste_Image.png

當(dāng)然驹饺,如果沒(méi)有配置钳枕,對(duì)應(yīng)的try... catch 可以 主動(dòng)拋異常,提醒配置


下一篇我們可以了解鴻洋AutoLayout代碼分析(三):入口類分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赏壹,一起剝皮案震驚了整個(gè)濱河市鱼炒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝌借,老刑警劉巖昔瞧,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異菩佑,居然都是意外死亡自晰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)稍坯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)酬荞,“玉大人,你說(shuō)我怎么就攤上這事瞧哟』烨桑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵勤揩,是天一觀的道長(zhǎng)咧党。 經(jīng)常有香客問(wèn)我,道長(zhǎng)雄可,這世上最難降的妖魔是什么凿傅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮数苫,結(jié)果婚禮上聪舒,老公的妹妹穿的比我還像新娘。我一直安慰自己虐急,他們只是感情好箱残,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著止吁,像睡著了一般被辑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敬惦,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天盼理,我揣著相機(jī)與錄音,去河邊找鬼俄删。 笑死宏怔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畴椰。 我是一名探鬼主播臊诊,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼斜脂!你這毒婦竟也來(lái)了抓艳?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤帚戳,失蹤者是張志新(化名)和其女友劉穎玷或,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體片任,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庐椒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蚂踊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片约谈。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖犁钟,靈堂內(nèi)的尸體忽然破棺而出棱诱,到底是詐尸還是另有隱情,我是刑警寧澤涝动,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布迈勋,位于F島的核電站,受9級(jí)特大地震影響醋粟,放射性物質(zhì)發(fā)生泄漏靡菇。R本人自食惡果不足惜重归,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望厦凤。 院中可真熱鬧鼻吮,春花似錦、人聲如沸较鼓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)博烂。三九已至香椎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間禽篱,已是汗流浹背畜伐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躺率,地道東北人烤礁。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肥照,于是被迫代替她去往敵國(guó)和親脚仔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容