自定義 View 能夠說是 Android 路上的一道坎,會的人以爲簡單,不會的以爲很難。最近正好在看《Android 開發藝術探索》講的自定義 View 這裏,因而打算從頭理一理自定義 View,寫寫筆記,方便往後本身查閱也但願能幫助到你。
android
在咱們自定義 View,尤爲是製做一些複雜炫酷的效果的時候,其實是將一些簡單的東西經過數學上精密的計算組合到一塊兒造成的效果。
這其中可能會涉及到畫布的相關操做 (旋轉),以及一些正餘弦函數的計算等,這些內容就會用到一些角度、弧度相關的知識。
函數
在前面的博客當中,咱們學習了 View 的一些工做原理知識等,如今是時候來寫一波實例了,畢竟實踐出真知嘛~ 在開始寫實例以前,首先來了解下自定義 View 到底有哪幾種吧,而後再根據每種分別寫一個簡單的小栗子。
工具
這期是 HenCoder 自定義繪製的第三期:文字的繪製。 以前的內容在這裏: HenCoder Android 開發進階 自定義 View 1-1 繪製基礎 HenCoder Android 開發進階 自定義 View 1-2 Paint 詳解 若是你沒據說過 HenCode…
佈局
從今天開始,HenCoder 就正式開講知識技能了。按照個人計劃,第一季是 UI,UI 一共分爲三部分:繪製、佈局和觸摸反饋。本期是繪製部分的第一期。繪製大概會用 5~6 期的時間講完,整個 UI 的繪製、佈局和觸摸反饋三部分大概會用十來期。更新頻率大約爲每週一更(不承諾喲)。 …
學習
前面已經瞭解了 View 三大流程的 measure 和 layout 過程,這一篇繼續學習最後的 draw 過程。draw 的過程依舊是在 ViewRootImpl#performTraversals 方法中調用的,其調用順序是在最後, 相較與 measure 和 layout 過程要簡單的多,它的做用就是將 View 繪製到屏幕上面。
動畫
這期是 HenCoder 自定義繪製的第 1-4 期:Canvas 對繪製的輔助——範圍裁切和幾何變換。 以前的內容在這裏: HenCoder Android 開發進階 自定義 View 1-1 繪製基礎 HenCoder Android 開發進階 自定義 View 1-2 Pa…
3d
和自定義 View 打交道,確定是不免要寫自定義屬性的。雖然咱們能夠直接使用 Android 自己一些系統控件定義的屬性,可是在實際開發中,因爲咱們所自定義 View 的多樣性,因此咱們就須要本身來定義屬於咱們所編寫自定義控件的屬性了。
orm
在上一篇自定義 View 分類與流程中咱們瞭解自定義 View 相關的基本知識,不過,這些東西依舊仍是理論,並不能拿來 (zhuang) 用(B), 這一次咱們就瞭解一些能 (zhaung) 用(B)的東西。
在本篇文章中,咱們先了解 Canvas 的基本用法,最後用一個小示例來結束本次教程。
教程
在上一篇文章了,咱們學習了 View 三大流程之一的 measure 過程,當 measure 過程完成後,View 的大小就測量好了。接下來就到了 layout 的過程了,layout 的過程就是用於肯定 View 的位置。下面經過查看源碼,來更深刻的瞭解下 layout 的整個過程。
遞歸
上一篇【Canvas 之繪製基本形狀】中咱們瞭解瞭如何使用 Canvas 繪製基本圖形,本次瞭解一些基本的畫布操做。合理的使用畫布操做能夠幫助你用更容易理解的方式創做想要的效果。
經歷過前兩篇 Path 之基本操做 和 Path 之貝塞爾曲線 的講解,終於進入 Path 的收尾篇,本篇主要講解Path中的填充模式,布爾運算,邊界計算等。
Matrix 是一個在後臺默默辛苦工做的勞模,咱們常常看到它的勞動成果,卻不多見到 Matrix,就讓咱們藉助本篇文章來探訪一下 Matrix 都作了哪些工做,是如何工做的。
在上一篇文章 Path 之基本圖形中咱們瞭解了 Path 的基本使用方法,本次瞭解 Path 中很是很是很是重要的內容 - 貝塞爾曲線。讓咱們共同感覺曲線之美。
measure 過程要分兩種狀況,第一種是 View,第二種是 ViewGroup。若是是 View 的話,那麼只經過 measure 方法就完成其測量過程,可是若是是 ViewGroup 的話,不只須要完成本身的測量過程,還須要完成它全部子 View 的測量過程。若是子 View 又是一個 ViewGroup,那麼繼續遞歸這個流程。下面先從 View 開始,詳細瞭解下 View 的 measure 過程。
本篇主要講解 Path 與 PathMeasure 的關係以及二者結合創造出的神奇效果,想必用來裝逼也是不錯的。
【Android 乾貨】從應用場景理解 android 事件分發機制,和外面那些妖豔的賤貨徹底不同呢。
因爲移動設備通常定義屏幕左上角爲座標原點,向右爲 x 軸增大方向,向下爲 y 軸增大方向, 因此在手機屏幕上的座標系與數學中常見的座標系是稍微有點差異的。
在上一篇文章 Canvas 之畫布操做中咱們瞭解了畫布的一些基本操做方法,本次瞭解一些繪製圖片文字相關的內容。若是你對前幾篇文章講述的內容熟練掌握的話,那麼恭喜你,本篇結束以後,大部分的自定義 View 已經難不倒你了,固然了,這並非終點,接下來還會有更加炫酷的技能。
本章節爲何要叫進階篇?(雖然講的是基礎內容),由於從本篇開始,將會逐漸揭開自定義 View 的神祕面紗,每一篇都將比上一篇內容更加深刻,利用所學的知識可以製做更加炫酷自定義 View,就像在臺階上同樣,每一篇都更上一層,幫助你們一步步走向人生巔峯,出任 CEO,迎娶白富美。 誤,是幫助你們更加了解那些炫酷的自定義 View 是如何製做的,達到觸類旁通的效果。
圖解 Android 事件分發原理,讓你深刻了解事件分發過程當中的權力結構。
在上一篇(Android 從 0 開始自定義控件之 View 的滑動(二))中,用 scrollTo() 和 scrollBy() 方法實現了 View 的滑動,可是實現的效果很是的生硬,用戶體驗不好。
這一篇繼續在原有基礎上,擴展下 View 的彈性滑動。
好幾個星期沒寫博客了,今天繼續來學習 View 相關的知識:View 的三大流程:測量流程、佈局流程、繪製流程。
在瞭解這三大流程以前,首先來了解下 View 的幾個基本概念,關於 ViewRoot 和 DecorView。
這應該是目前最詳細的一篇講解 Matrix 的中文文章了,在上一篇文章 Matrix 原理中,咱們對 Matrix 作了一個簡單的瞭解,偏向理論,在本文中則會詳細的講解 Matrix 的具體用法,偏向實戰。另外本文也包括了一些關於 Matrix 的實用技巧。
滑動衝突能夠說每個 Android 開發者都遇到過,雖然 Android 已經在如 ViewPager 這些控件內部處理了滑動衝突,可是在咱們本身定義控件,或者一些複雜的佈局狀況下,依然要去解決滑動衝突的狀況。
這一篇文章總結了下滑動衝突出現的場景,以及其中的規則和解決方法。
因爲 Android 的屏幕侷限性,爲了展現更多的東西,實現一個能夠滑動的 View 仍是很是重要的。因此這篇文章主要記下 View 的幾種常見滑動方式:
1,經過 View 的 ScrollBy 和 ScrollTo 方法實現滑動。
2,經過動畫給 View 施加位移效果來實現滑動。
3,經過改變 View 的 LayoutParams 使 View 從新佈局從而實現滑動。
這期是 HenCoder 自定義繪製的第二期: Paint。若是你沒看過第一期,能夠先去看一下第一期: HenCoder Android 開發進階:自定義 View 1-1 繪製基礎 簡介 上一期我已經簡單說過, Canvas 的 drawXXX() 方法配合 Paint 的幾個…
MeasureSpec 是 View 的一個內部類,表明了一個 32 位的 int 值,高 2 位表明 SpecMode,低 30 位表明 SpecSize。SpecMode 是指測量模式,SpecSize 是指在某種測量模式下的規格大小。.
該類在很大程度上決定了 View 的尺寸規格,之因此說很大程度上是由於這個過程還受父容器的影響,是由於父容器影響 View 的 MeasureSpec 的建立過程。系統會將 View 的 LayoutParams 根據父容器所施加的規則轉換成對應的 MeasureSpec,而後再根據這個 MeasureSpec 來測量出 View 的寬高。須要注意的是,這個的寬高是測量的寬高,並不必定是 View 最終的寬高。
簡要介紹安卓中的顏色相關內容,包括顏色的定義,建立顏色的幾種方式,以及顏色的混合模式等。
一個專業給 View 拍照的攝像機,安卓製做簡單 3D 效果必不可少的工具,你值得擁有。
在上一篇 Canvas 之圖片文字中咱們瞭解瞭如何使用 Canvas 中繪製圖片文字,結合前幾篇文章,Canvas 的基本操做已經差很少完結了,然而 Canvas 不只僅具備這些基本的操做,還能夠更加炫酷,本次會了解到 path(路徑)這個 Canvas 中的神器,有了這個神器,就能創造出更多炫 (zhuang) 酷(B)的東東了。