先上效果圖:
有不足的地方請多多指教!
由于工作,我也是邊工作邊學習自定義,多虧了輝哥的指教,在此謝謝!
下面進入正題:
我們要實現的是,實現類似iOS拍照的按鈕滑動功能,這里就以最近項目中用到的開始、暫停、停止為準,度娘了一下,發現沒有,于是決定自己搞吧!
需求分析:
1:進入項目就只有暫停按鈕居中,(所有按鈕縱坐標不變)
2:點擊暫停按鈕,暫停按鈕消失,開始和停止按鈕向兩邊滑動至屏幕的(1/6-按鈕寬度的一半)和(5/6-按鈕寬度的一半)
3:點擊開始按鈕,開始按鈕和停止按鈕向中間滑動,當重合時顯示,暫停按鈕顯示
一:繼承RelativeLayout,復寫其中三個方法,在第三個方法中獲取屏幕寬度,并分成三等分,分別獲取到這三等分的各自中點
1.獲取屏幕寬度方法:
2.復寫其中三個方法,并分成三等分,分別獲取到這三等分的各自中點
二、待布局加載完成獲取子view,先獲取子view的數量就是三個:開始、暫停、停止
三、接下來就是在初始擺放控件的方法里面進行進行監聽、位置擺放等操作
1.設置暫停按鈕的初始位置(中點不行),并設置開始按鈕和停止按鈕的監聽,默認三個按鈕需要到達的位置為:
開始:屏幕寬度的六分之一減去按鈕寬度的一半
暫停:屏幕寬度的一半減去按鈕寬度的一半
停止:屏幕寬度的六分之五減去按鈕寬度的一半
2。因為默認是在進行中所以進入項目就只有暫停按鈕,點擊暫停按鈕就涉及三個按鈕的動畫:暫停按鈕消失、開始按鈕向左滑動、停止按鈕向右滑動
點擊暫停:創建動畫集合,分別創建開始和停止的屬性動畫,最后將開始和停止一起加入動畫集合,然后start
3.點擊開始按鈕就涉及三個按鈕的動畫:開始按鈕向右滑動、停止按鈕向左滑動,當開始按鈕坐標到達暫停按鈕時,暫停按鈕顯示、開始和停止按鈕消失
點擊開始:創建動畫集合,分別創建開始和停止的屬性動畫,最后將開始和停止一起加入動畫集合,然后start
四、接下來在xml文件中加入剛寫好的布局,在布局中隨便加入三個按鈕:開始,暫停,停止
然后運行,OK!
github:demo地址