我是如何拿到腾讯头条美团小米的offer从小厂跳到大厂的?终局之战
前言
俗話說“生于憂患,死于安樂”,其實大部分中年危機,就是在安樂中產生的。
有的人或許會反駁,“照你這么說,我還必須奮斗了,不奮斗就要死,難道選擇安逸的生活就不對嗎?我就沒有選擇自己生活方式的權利嗎?”
說這句話的人其實有一些誤解,誤解就在于,安逸的生活并不等于不需要奮斗,這要看你的家底。
某聰如果說要選擇安逸的生活,他可以很安逸,因為他有了安逸的資本,而大部分的你,并沒有這個資本,你如果過早的選擇了安逸的生活,那么結局往往會很悲慘,而你能做的,最多也就是讓你的后代有選擇安逸的資本。
而你,并沒有這個選擇的權利,所以,想要安逸的生活,就必須先奮斗!
而大部分中年危機,就是因為安逸之前的奮斗不足導致的。
一.view渲染機制分為:
- onLaout與onMeasure
- onDraw映射機制
二.常用view有:
1.RecycleView
- 解讀源碼
- 布局管理器LayoutManager
- 條目裝飾ItemDecoration
- ViewHolder與回收復用機制
2.CardView
- 源碼的解答
- 圓角陰影實現原理
- 5.0以下陰影與邊距的適配
3.viewpager
- 加載機制和如何優化
- 如何與Fragment結合
4.Webview
- 原理分析
- JS與java交互
- 多線程WebView使用
- WebView和native的通信框架
三.布局ViewGroup
- ConstaintLayout
- LinearLayout
- RelativeLayout
- FrameLayout
- GridLayout
四.View的繪制流程
4.1自定義控件:
1、組合控件。這種自定義控件不需要我們自己繪制,而是使用原生控件組合成的新控件。如標題欄。
2、繼承原有的控件。這種自定義控件在原生控件提供的方法外,可以自己添加一些方法。如制作圓角,圓形圖片。
3、完全自定義控件:這個View上所展現的內容全部都是我們自己繪制出來的。比如說制作水波紋進度條。
View的繪制流程:OnMeasure()——>OnLayout()——>OnDraw()
- 第一步:OnMeasure():測量視圖大小。從頂層父View到子View遞歸調用measure方法,measure方法又回調OnMeasure。
- 第二步:OnLayout():確定View位置,進行頁面布局。從頂層父View向子View的遞歸調用view.layout方法的過程,即父View根據上一步measure子View所得到的布局大小和布局參數,將子View放在合適的位置上。
- 第三步:OnDraw():繪制視圖。
ViewRoot創建一個Canvas對象,然后調用OnDraw()。
六個步驟:
- 繪制視圖的背景;
- 保存畫布的圖層(Layer);
- 繪制View的內容;
- 繪制View子視圖,如果沒有就不用;
- 還原圖層(Layer);
- 繪制滾動條。
4.2View,ViewGroup事件分發
1.Touch事件分發中只有兩個主角:ViewGroup和View。
ViewGroup
包含onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent三個相關事件。
View
包含dispatchTouchEvent、onTouchEvent兩個相關事件。
其中ViewGroup又繼承于View。
2.ViewGroup和View組成了一個樹狀結構,根節點為Activity內部包含的一個ViewGroup。
3.觸摸事件由Action_Down、Action_Move、Aciton_UP組成,其中一次完整的觸摸事件中,Down和Up都只有一個,Move有若干個,可以為0個。
4.當Acitivty接收到Touch事件時,將遍歷子View進行Down事件的分發。ViewGroup的遍歷可以看成是遞歸的。分發的目的是為了找到真正要處理本次完整觸摸事件的View,這個View會在onTouchuEvent結果返回true。
5.當某個子View返回true時,會中止Down事件的分發,同時在ViewGroup中記錄該子View。接下去的Move和Up事件將由該子View直接進行處理。由于子View是保存在ViewGroup中的,多層ViewGroup的節點結構時,上級ViewGroup保存的會是真實處理事件的View所在的ViewGroup對象:如ViewGroup0-ViewGroup1-TextView的結構中,TextView返回了true,它將被保存在ViewGroup1中,而ViewGroup1也會返回true,被保存在ViewGroup0中。當Move和UP事件來時,會先從ViewGroup0傳遞至ViewGroup1,再由ViewGroup1傳遞至TextView。
6.當ViewGroup中所有子View都不捕獲Down事件時,將觸發ViewGroup自身的onTouch事件。觸發的方式是調用super.dispatchTouchEvent函數,即父類View的dispatchTouchEvent方法。在所有子View都不處理的情況下,觸發Acitivity的onTouchEvent方法。
7.onInterceptTouchEvent有兩個作用:
- 攔截Down事件的分發。
- 中止Up和Move事件向目標View傳遞,使得目標View所在的ViewGroup捕獲Up和Move事件。
學習分享
在當下這個信息共享的時代,很多資源都可以在網絡上找到,只取決于你愿不愿意找或是找的方法對不對了
很多朋友不是沒有資料,大多都是有幾十上百個G,但是雜亂無章,不知道怎么看從哪看起,甚至是看后就忘
如果大家覺得自己在網上找的資料非常雜亂、不成體系的話,我也分享一套給大家,比較系統,我平常自己也會經常研讀。
2021最新上萬頁的大廠面試真題
七大模塊學習資料:如NDK模塊開發、Android框架體系架構…
只有系統,有方向的學習,才能在段時間內迅速提高自己的技術。
這份體系學習筆記,適應人群:
第一,學習知識比較碎片化,沒有合理的學習路線與進階方向。
第二,開發幾年,不知道如何進階更進一步,比較迷茫。
第三,到了合適的年紀,后續不知道該如何發展,轉型管理,還是加強技術研究。如果你有需要,我這里恰好有為什么,不來領取!說不定能改變你現在的狀態呢!
識比較碎片化,沒有合理的學習路線與進階方向。
第二,開發幾年,不知道如何進階更進一步,比較迷茫。
第三,到了合適的年紀,后續不知道該如何發展,轉型管理,還是加強技術研究。如果你有需要,我這里恰好有為什么,不來領取!說不定能改變你現在的狀態呢!
由于文章內容比較多,篇幅不允許,部分未展示內容以截圖方式展示 。如有需要獲取完整的資料文檔的朋友點擊我的騰訊文檔免費獲取。
總結
以上是生活随笔為你收集整理的我是如何拿到腾讯头条美团小米的offer从小厂跳到大厂的?终局之战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 Flutter 创建自适应应用
- 下一篇: CMM/CMMI 的区别