使用Kotlin讓Android APIs變得更有趣

最喜歡Kotlin中的功能之一就是擴(kuò)展功能,它允許你擴(kuò)展類(lèi)中的功能而不用繼承它們。

設(shè)置View的高度

在A(yíng)ndroid中動(dòng)態(tài)的給View設(shè)置高度是很煩人的,使用Kotlin擴(kuò)展,讓你變得更輕松:

fun View.setHeight(height:Int){
  val params = layoutParams
  params.height = height
  layoutParams = params
}

如果你想設(shè)置height到你的view實(shí)例中白热,你只需要調(diào)用view.setHeight(newHeight),超級(jí)簡(jiǎn)單!

設(shè)置View可見(jiàn)性

設(shè)置view為visible或者gone需要通過(guò)view.Visibility = View.VISIBLE or view.visibility = View.GONE,有了擴(kuò)展方法之后就不需要寫(xiě)這個(gè)了

fun View.visible(){
  visibility = View.VISIBLE 
}

fun View.gone(){
  visibility = View.GONE
}

現(xiàn)在你只需要調(diào)用view.visible()view.gone()

將Asset文件讀入到String中

fun AssetManager.fileAsString(subdirectory:String,filename:String):String{
  return open("$subdirectory/$filename").use{
    it.readBytes().toString(Charset.defaultCharset())
  }
}

現(xiàn)在我們可以調(diào)用如下代碼

val json = context.assets.fileAsString("json","config.json")

通過(guò)API 級(jí)別檢索一個(gè)color資源

API 23之前粗卜,檢索一個(gè)color 資源使用的是context.getColor(R.color.my_color),但是從23開(kāi)始屋确,添加了一個(gè)新參數(shù),如果你不需要指定主題資源续扔,為了使使用起來(lái)更簡(jiǎn)單并且在所有的API級(jí)別上都可以運(yùn)行:

fun Context.color(@ColorRes id:Int) = when{
  isAtLeastMarshmallow() -> resources.getColor(id,null)
  else -> resources.getColor(id)
}

現(xiàn)在調(diào)用context.color(R.color.my_color)就可以獲取顏色了攻臀,你甚至可以將主題資源作為默認(rèn)的可選參數(shù)

Inflate a Layout

fun Context.inflate(res:Int,parent:ViewGroup?=null):View{
  return LayoutInflater.from(this).inflate(res,parent,false)
}

現(xiàn)在我們可以寫(xiě)context.inflate(R.layout.my_layout).

使用JetBrains的Anko開(kāi)源庫(kù)

JetBrains已經(jīng)為了使Android開(kāi)發(fā)變的更簡(jiǎn)單做了很多的工作。他們?cè)贏(yíng)nko庫(kù)中創(chuàng)建了很多的擴(kuò)展方法纱昧,你可以自如的使用而不用創(chuàng)建任何自定義的擴(kuò)展方法刨啸。

例如,獲取西戎服務(wù)识脆,使用Anko變得更簡(jiǎn)單

val manager = context.notificationManager

他們的擴(kuò)展屬性如下所示:

val Context.notificationManager: NotificationManager
    get() = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

Android有很多很強(qiáng)大的APIs设联,但是他們常常要受到j(luò)ava的限制,使用Kotlin灼捂,你可以創(chuàng)建自己更常用的API离例。

原文地址:https://m.signalvnoise.com/using-kotlin-to-make-android-apis-fun-again-14690975afb6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市纵东,隨后出現(xiàn)的幾起案子粘招,更是在濱河造成了極大的恐慌啥寇,老刑警劉巖偎球,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洒扎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡衰絮,警方通過(guò)查閱死者的電腦和手機(jī)袍冷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猫牡,“玉大人胡诗,你說(shuō)我怎么就攤上這事√视眩” “怎么了煌恢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)震庭。 經(jīng)常有香客問(wèn)我瑰抵,道長(zhǎng),這世上最難降的妖魔是什么器联? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任二汛,我火速辦了婚禮,結(jié)果婚禮上拨拓,老公的妹妹穿的比我還像新娘肴颊。我一直安慰自己,他們只是感情好渣磷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布婿着。 她就那樣靜靜地躺著,像睡著了一般醋界。 火紅的嫁衣襯著肌膚如雪祟身。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天物独,我揣著相機(jī)與錄音袜硫,去河邊找鬼。 笑死挡篓,一個(gè)胖子當(dāng)著我的面吹牛婉陷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播官研,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼秽澳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了戏羽?” 一聲冷哼從身側(cè)響起担神,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎始花,沒(méi)想到半個(gè)月后妄讯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體孩锡,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年亥贸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躬窜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炕置,死狀恐怖荣挨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朴摊,我是刑警寧澤默垄,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站甚纲,受9級(jí)特大地震影響厕倍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贩疙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一讹弯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧这溅,春花似錦组民、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至癞尚,卻和暖如春耸三,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浇揩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工仪壮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胳徽。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓积锅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親养盗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缚陷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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