Android自訂控制項:可複用的Dialog彈出框

來源:互聯網
上載者:User

標籤:

最近幫工作室改一個項目,需求是製作許多單選、多選的Dialog彈出框,我感覺有許多代碼都是可重用的,就寫了個可重用的Dialog類,廢話不多說,先看圖:




由於一些和諧的原因,實際效果肯定是比這個好看的,這裡基本上都是原生屬性修改……簡單講一下設計思路吧:


為什麼選擇自訂DIalog子類而不是AlertDialog子類(或者其他)?


Dialog子類是諸如AlertDialog子類等的父類,其可自訂範圍更廣(因為被設計的子類屬性、方法等更少,同時又具備必要的屬性和方法),其次就是,有些子類的設計就讓人非常蛋疼。就拿AlertDialog來說吧,AlertDialog的構造方法是protected的,這就意味著AlertDialog類對象,及其子類對象都不能通過new的方式來獲得,而是需要通過getInstance來獲得,這使得我們寫自訂控制項的複雜性就大大上升了,非常蛋疼。所以基於減少麻煩的角度來考慮,我選擇Dialog來自訂。


進行了何種程度的最佳化?

首先,我把大部分findViewById方法在類內寫好,或者是通過傳入資源檔數組(pickerDialog可以有多個選擇框,這種情況下需要傳入一個數組去實現)的方式去減少這一步驟耗費的時間。


其次,雖然項目的需求各有不同,但是用的控制項本質上大多相似。所以我在自訂Dialog裡都添加了帶有style參數的構造方法,也就是說,使用這個自訂Dialog的人,可以花更少的時間去調整各式各樣的UI細節,只要在style.xml中寫好就行了,同時可以更多的專註於代碼本身。


最後,通過反射機制監聽了Dialog內的點擊事件,使用者只要寫好對應的點擊事件就可以了。


源碼在下方,大家都可以免費下載,我就不貼上來了


源碼下載

Android自訂控制項:可複用的Dialog彈出框

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.