android时间轴左右交叉布局,快速简单的定制一个时间轴布局(LinearLayout)
github:
先上圖:
很多情況下,我們都會遇到需要類似于時間軸的一個布局,網上也有很多,但是很多情況下我們其實并不需要那么多庫,畢竟64k限制就在那,不管我們用還是不用,它依然在那。。。
而且更多時候,我們的時間軸也許并不需要那么多數據(比如轉賬流程?)
事實上這次的教程也是因為我司需要弄一個轉賬流程,這個轉賬流程包含了基本的三個狀態:
1 - 轉賬開始
2 - 轉賬中
3 - 轉賬成功
而失敗后重新轉賬可以看到前面的狀態,也就是前面的三個狀態的重復
一般而言,轉賬3~4次失敗我們也就算了,同時因為布局比較簡單,所以我這次就沒打算用listview,而是簡單的繼承LinearLayout
當然,如果數據比較多,為了內存建議還是用listview好
那么下面正文開始:
首先規劃一下我們需要的元素,從圖中我們可以看到的元素有:
線(顏色,寬),點(大小,顏色),圖標
為了方便調整,我們還需要引入兩個值
點距離父控件左邊的偏移值(調整左右間距),每個節點距離childView的偏移值(調整上下間距)
于是我們的attrs.xml就出來了
然后繼承LinearLayout,開始我們的簡易時間軸
構造器我們獲取各種參數,至于變量就不解釋了
我們的主要方法都在onDraw里面,onDraw我們執行一個方法
而我們的drawTimeLine的方法如下:
按照我的設想,是想著橫著也做一個的,但由于時間原因,就暫時未能實現,但其實實現原理都是一樣的。
接下來就是最主要的幾個方法了:
這里說說思路:
首先我們在ondraw里面獲取子控件的數量,然后通過子控件的屬性定位我們的時間軸
第一步我們先確定第一個子控件的位置,這里因為垂直的時間軸,所以我們通過top+paddingTop來確定我們的結點Y位置,同時引用我們xml定義好的dynamic值來微調。同時記錄下此時第一個結點的x,y
第二步我們確定最后一個控件的位置,方法同第一步,也記錄下此時最后一個節點的x,y。同時調用drawBitmap畫出我們的icon
第三步我們就畫第一個和最后一個之間的子控件的線和結點。相關注釋都在代碼中標注好了,所以這里就不再詳細闡述了
這個工程還沒完成,以后如果有時間我希望能把水平方向的也弄出來。當然,如果諸位有更nice的修正歡迎PullRequest.
這是一個簡單的時間軸定制,希望能夠幫到你-V-(詳細代碼請看github)
總結
以上是生活随笔為你收集整理的android时间轴左右交叉布局,快速简单的定制一个时间轴布局(LinearLayout)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android文件存储数组,Androi
- 下一篇: qt android 对话框,Qt自定义