Android 開發(fā)技巧 - 通過getIdentifier()方法實(shí)現(xiàn)在Module中使用Application資源

轉(zhuǎn)載請(qǐng)注明出處,感謝您的支持。同時(shí)瞒滴,歡迎加入移動(dòng)開發(fā)學(xué)習(xí)交流qq群 : 450302004父晶,互相學(xué)習(xí)哮缺。
文章來源:【chenyk的簡書】http://www.reibang.com/p/282b0d1c142c

前言

在項(xiàng)目的開發(fā)過程中,對(duì)于資源的使用甲喝,無非有以下幾種情況:

1尝苇、Application使用自身資源
2、Application使用Module資源
3埠胖、Module使用自身或另外的Module資源
4糠溜、Module使用Application資源

前3項(xiàng)在這里就不過多介紹,這里主要說下第4項(xiàng)直撤,有些時(shí)候我們需要在抽取的module中使用到Application的資源非竿,而且我們并不想在Module中重新定義。如果直接調(diào)用的話谋竖,是調(diào)用不到的红柱。所以我們需要通過getIdentifier()方法來實(shí)現(xiàn),具體如下:

  /**
     * 獲取context中對(duì)應(yīng)類型的資源id
     *
     * @param context
     * @param type 資源類型蓖乘,"layout","string","drawable","color"等
     * @param resName
     * @return
     */
    private static int getResId(Context context, String type, String resName) {
        return context.getResources().getIdentifier(resName, type, context.getPackageName());
    }

舉個(gè)栗子豹芯,在下圖中,包含2個(gè)Application(app/doctor)5個(gè)Module(calendarview/commlib/date_picker/MPChartLib/NativeH5Lib)驱敲,如果要在commlib使用app的資源铁蹈,就使用以上的方法去獲取。

項(xiàng)目結(jié)構(gòu).png

調(diào)用方式

調(diào)用方法非常簡單众眨,只需傳入context和res名稱即可握牧,如下所示:

ResourceUtil.getColorResId(this, "colorPrimary"); //colorPrimary是color.xml文件中定義的資源

完整的工具類

import android.content.Context;

/**
 * Created by chenyk on 2017/6/2.
 * 資源工具類
 * 功能:module中根據(jù)context動(dòng)態(tài)獲取application中對(duì)應(yīng)資源文件
 */

public class ResourceUtil {
    /**
     * 獲取布局資源
     *
     * @param context
     * @param resName
     * @return
     */
    public static int getLayoutResId(Context context, String resName) {
        return getResId(context, "layout", resName);
    }

    /**
     * 獲取字符串資源
     *
     * @param context
     * @param resName
     * @return
     */
    public static int getStringResId(Context context, String resName) {
        return getResId(context, "string", resName);
    }

    /**
     * 獲取Drawable資源
     *
     * @param context
     * @param resName
     * @return
     */
    public static int getDrawableResId(Context context, String resName) {
        return getResId(context, "drawable", resName);
    }

    /**
     * 獲取顏色資源
     *
     * @param context
     * @param resName
     * @return
     */
    public static int getColorResId(Context context, String resName) {
        return getResId(context, "color", resName);
    }

    /**
     * 獲取id文件中資源
     *
     * @param context
     * @param resName
     * @return
     */
    public static int getIdRes(Context context, String resName) {
        return getResId(context, "id", resName);
    }

    /**
     * 獲取數(shù)組資源
     *
     * @param context
     * @param resName
     * @return
     */
    public static int getArrayResId(Context context, String resName) {
        return getResId(context, "array", resName);
    }

    /**
     * 獲取style中資源
     *
     * @param context
     * @param resName
     * @return
     */
    public static int getStyleResId(Context context, String resName) {
        return getResId(context, "style", resName);
    }

    /**
     * 獲取context中對(duì)應(yīng)類型的資源id
     *
     * @param context
     * @param type
     * @param resName
     * @return
     */
    private static int getResId(Context context, String type, String resName) {
        return context.getResources().getIdentifier(resName, type, context.getPackageName());
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娩梨,隨后出現(xiàn)的幾起案子沿腰,更是在濱河造成了極大的恐慌,老刑警劉巖狈定,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颂龙,死亡現(xiàn)場離奇詭異,居然都是意外死亡纽什,警方通過查閱死者的電腦和手機(jī)措嵌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芦缰,“玉大人企巢,你說我怎么就攤上這事∪美伲” “怎么了浪规?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵或听,是天一觀的道長。 經(jīng)常有香客問我笋婿,道長誉裆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任缸濒,我火速辦了婚禮找御,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绍填。我一直安慰自己霎桅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布讨永。 她就那樣靜靜地躺著滔驶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卿闹。 梳的紋絲不亂的頭發(fā)上揭糕,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音锻霎,去河邊找鬼著角。 笑死,一個(gè)胖子當(dāng)著我的面吹牛旋恼,可吹牛的內(nèi)容都是我干的吏口。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冰更,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼产徊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜀细,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤舟铜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奠衔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谆刨,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年归斤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痊夭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡官册,死狀恐怖生兆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膝宁,我是刑警寧澤鸦难,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站员淫,受9級(jí)特大地震影響合蔽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜介返,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一拴事、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧圣蝎,春花似錦刃宵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至关面,卻和暖如春坦袍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背等太。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工捂齐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缩抡。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓奠宜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瞻想。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挎塌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評(píng)論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)内边,斷路器榴都,智...
    卡卡羅2017閱讀 134,660評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評(píng)論 6 342
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件漠其、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,105評(píng)論 4 62
  • 開營三天來嘴高,組內(nèi)氛圍還可以,收到11份自我介紹和屎,有幾位小伙伴不夠主動(dòng)拴驮。 下周計(jì)劃: 1.確定共讀書目 2.進(jìn)一步了...
    麋鹿心成長閱讀 115評(píng)論 0 0