天天看點

Android繪圖機制(一)——自定義View的基礎屬性和方法Android繪圖機制(一)——自定義View的基礎屬性和方法

自定義view看起來,确實看起來高深莫測,很多android開發都不是特别在行這一塊,這裡面的邏輯以及一些繪畫都是有一點難的,說一下我目前的狀況吧,結束了一個項目,現在接手一個新的項目,老項目的時候自己确實花了點時間去研究,包括看一些相關的博文和資料,新項目的自定義view更多,現在大緻的對自定義view有了一些了解,但是你要說我會呢?我确實還沒有掌握,隻不過我把 我畫的一些柱形圖和其他圖 的想法寫出來,當然,你要讓我說原理我肯定說不出來,我隻能把未的一些積累給寫出來,包括繪制的時候的坐标以及所對應的規律!
1.對現有的控件進行擴充 2.通過元件來實作新的控件 3.重寫view來實作全新的控件
exactly 表示父視圖希望子視圖的大小應該是由specsize的值來決定的,系統預設會按照這個規則來設定子視圖的大小,開發人員當然也可以按照自己的意願設定成任意的大小。 at_most 表示子視圖最多隻能是specsize中指定的大小,開發人員應該盡可能小得去設定這個視圖,并且保證不會超過specsize。系統預設會按照這個規則來設定子視圖的大小,開發人員當然也可以按照自己的意願設定成任意的大小。 unspecified 表示開發人員可以将視圖按照自己的意願設定成任意的大小,沒有任何限制。這種情況比較少見,不太會用到。
視圖狀态的種類非常多,一共有十幾種類型,不過多數情況下我們隻會使用到其中的幾種,是以這裡我們也就隻去分析最常用的幾種視圖狀态。 1. enabled 表示目前視圖是否可用。可以調用setenable()方法來改變視圖的可用狀态,傳入true表示可用,傳入false表示不可用。它們之間最大的差別在于,不可用的視圖是無法響應ontouch事件的。 2. focused 表示目前視圖是否獲得到焦點。通常情況下有兩種方法可以讓視圖獲得焦點,即通過鍵盤的上下左右鍵切換視圖,以及調用requestfocus()方法。而現在的android手機幾乎都沒有鍵盤了,是以基本上隻可以使用requestfocus()這個辦法來讓視圖獲得焦點了。而requestfocus()方法也不能保證一定可以讓視圖獲得焦點,它會有一個布爾值的傳回值,如果傳回true說明獲得焦點成功,傳回false說明獲得焦點失敗。一般隻有視圖在focusable和focusable in touch mode同時成立的情況下才能成功擷取焦點,比如說edittext。 3. window_focused 表示目前視圖是否處于正在互動的視窗中,這個值由系統自動決定,應用程式不能進行改變。 4. selected 表示目前視圖是否處于選中狀态。一個界面當中可以有多個視圖處于選中狀态,調用setselected()方法能夠改變視圖的選中狀态,傳入true表示選中,傳入false表示未選中。 5. pressed 表示目前視圖是否處于按下狀态。可以調用setpressed()方法來對這一狀态進行改變,傳入true表示按下,傳入false表示未按下。通常情況下這個狀态都是由系統自動指派的,但開發者也可以自己調用這個方法來進行改變。
這邊隻是稍微的基礎,大家看了可能會覺得瞎扯,這也太簡單了吧,但是對一部分想了解自定義view的人來說,這種簡單粗暴的寫法可能更好一點,教程也會逐漸加深的,客觀莫慌!

繼續閱讀