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