get(url).placeholder(R.drawable.shape_default_round_bg)
.error(R.drawable.shape_default_round_bg)
// .apply(RequestOptions.bitmapTransform(RoundedCornersTransformation(DisplayUtil.dp2px(context, 6f), 0)))
.transform(RoundedCornersTransformation(DisplayUtil.dp2px(context, 6f), 0))
.into(this)
}
/**
- 占位符圓形
*/
fun ImageView.loadCircle(url: Drawable) {
get(url).placeholder(R.drawable.shape_default_circle_bg)
.error(R.drawable.shape_default_circle_bg)
.into(this)
}
fun ImageView.loadCircle(url: String) {
get(url).placeholder(R.drawable.shape_default_circle_bg)
.error(R.drawable.shape_default_circle_bg)
.into(this)
}
fun ImageView.get(url: String): GlideRequest = GlideApp.with(context).load(url)
fun ImageView.get(url: Drawable): GlideRequest = GlideApp.with(context).load(url)
除此之外,我們還很多地方都用到了擴(kuò)展函數(shù)。
我順便更新了我的Kolin的工具類(lèi)庫(kù),它包括各種utils和各種extension https://github.com/fengzhizi715/SAF-Kotlin-Utils
二.尾隨閉包
一開(kāi)始我并不了解這個(gè)概念。偶然間我看到我們的小伙伴在使用RxBus時(shí),寫(xiě)下了這樣的代碼:
RxBus.get().register(LogoutEvent::class.java) { refresh() }
當(dāng)時(shí)我感覺(jué)很疑惑,因?yàn)镽xBus是我寫(xiě)的,記得沒(méi)有提供這樣的方法啊。點(diǎn)擊register()方法進(jìn)去看之后,發(fā)現(xiàn)register是這樣的:
public Disposable register(Class eventType, Consumer onNext) {
return toObservable(eventType).observeOn(AndroidSchedulers.mainThread()).subscribe(onNext);
}
由于使用了Kotlin,該register方法的使用可以簡(jiǎn)化成這樣:
RxBus.get().register(LogoutEvent::class.java,{
refresh()
})
由于register()最后一個(gè)參數(shù)是一個(gè)方法或者說(shuō)是一個(gè)閉包,可以把方法或者閉包提到最外面。變成項(xiàng)目中看到的樣子:
RxBus.get().register(LogoutEvent::class.java) { refresh() }
這就是尾隨閉包,可以讓代碼看起來(lái)更加簡(jiǎn)潔。
三.with的用法
with是將某個(gè)對(duì)象作為函數(shù)的參數(shù),在函數(shù)塊內(nèi)可以通過(guò) this 指代該對(duì)象。在函數(shù)塊內(nèi)可以直接調(diào)用對(duì)象的方法或者屬性。
/**
- Calls the specified function [block] with the given [receiver] as its receiver and returns its result.
*/
@kotlin.internal.InlineOnly
public inline fun <T, R> with(receiver: T, block: T.() -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return receiver.block()
}
在使用with之前的某個(gè)Adapter
class AppPublisherAdapter : BaseAdapter<BoundAppInfoResponse.AppInfo>() {
override fun getLayoutId(viewType: Int): Int = R.layout.cell_app_publisher
override fun onBindViewHolderImpl(holder: BaseViewHolder, position: Int,content: BoundAppInfoResponse.AppInfo) {
holder.itemView.tv_game_name.text = content.name
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠(chǎng),18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)Android工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Android移動(dòng)開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Android開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠(chǎng)面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新
如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以添加V獲取:vip204888 (備注Android)
尾聲
如果你想成為一個(gè)優(yōu)秀的 Android 開(kāi)發(fā)人員,請(qǐng)集中精力,對(duì)基礎(chǔ)和重要的事情做深度研究。
對(duì)于很多初中級(jí)Android工程師而言,想要提升技能,往往是自己摸索成長(zhǎng),不成體系的學(xué)習(xí)效果低效漫長(zhǎng)且無(wú)助。 整理的這些架構(gòu)技術(shù)希望對(duì)Android開(kāi)發(fā)的朋友們有所參考以及少走彎路,本文的重點(diǎn)是你有沒(méi)有收獲與成長(zhǎng),其余的都不重要,希望讀者們能謹(jǐn)記這一點(diǎn)。
這里,筆者分享一份從架構(gòu)哲學(xué)的層面來(lái)剖析的視頻及資料分享給大家梳理了多年的架構(gòu)經(jīng)驗(yàn),籌備近6個(gè)月最新錄制的,相信這份視頻能給你帶來(lái)不一樣的啟發(fā)、收獲。
PS:之前因?yàn)榍镎惺占亩滓欢€(xiàn)互聯(lián)網(wǎng)公司Android面試真題 (含BAT、小米、華為、美團(tuán)、滴滴)和我自己整理Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識(shí)點(diǎn)、Android擴(kuò)展知識(shí)點(diǎn)、Android源碼解析、設(shè)計(jì)模式匯總、Gradle知識(shí)點(diǎn)、常見(jiàn)算法題匯總。)
架構(gòu)篇
《Jetpack全家桶打造全新Google標(biāo)準(zhǔn)架構(gòu)模式》
本文已被CODING開(kāi)源項(xiàng)目:《Android學(xué)習(xí)筆記總結(jié)+移動(dòng)架構(gòu)視頻+大廠(chǎng)面試真題+項(xiàng)目實(shí)戰(zhàn)源碼》收錄
一個(gè)人可以走的很快,但一群人才能走的更遠(yuǎn)。如果你從事以下工作或?qū)σ韵赂信d趣,歡迎戳這里加入程序員的圈子,讓我們一起學(xué)習(xí)成長(zhǎng)!
AI人工智能、Android移動(dòng)開(kāi)發(fā)、AIGC大模型、C C#、Go語(yǔ)言、Java、Linux運(yùn)維、云計(jì)算、MySQL、PMP、網(wǎng)絡(luò)安全、Python爬蟲(chóng)、UE5、UI設(shè)計(jì)、Unity3D、Web前端開(kāi)發(fā)、產(chǎn)品經(jīng)理、車(chē)載開(kāi)發(fā)、大數(shù)據(jù)、鴻蒙、計(jì)算機(jī)網(wǎng)絡(luò)、嵌入式物聯(lián)網(wǎng)、軟件測(cè)試、數(shù)據(jù)結(jié)構(gòu)與算法、音視頻開(kāi)發(fā)、Flutter、IOS開(kāi)發(fā)、PHP開(kāi)發(fā)、.NET、安卓逆向、云計(jì)算文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-848201.html
算、MySQL、PMP、網(wǎng)絡(luò)安全、Python爬蟲(chóng)、UE5、UI設(shè)計(jì)、Unity3D、Web前端開(kāi)發(fā)、產(chǎn)品經(jīng)理、車(chē)載開(kāi)發(fā)、大數(shù)據(jù)、鴻蒙、計(jì)算機(jī)網(wǎng)絡(luò)、嵌入式物聯(lián)網(wǎng)、軟件測(cè)試、數(shù)據(jù)結(jié)構(gòu)與算法、音視頻開(kāi)發(fā)、Flutter、IOS開(kāi)發(fā)、PHP開(kāi)發(fā)、.NET、安卓逆向、云計(jì)算**文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-848201.html
到了這里,關(guān)于android計(jì)算器界面布局線(xiàn)性布局跨2行,使用Kotlin高效地開(kāi)發(fā)Android App(一,GitHub標(biāo)星3.2K的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!