自定義控制項在android開發中的重要性,是不言而喻,眾人皆知的。希望通過這二天的學習,能讓大家了解自定義控制項的原理,熟悉自定義控制項的使用步驟,並能寫出一些普通的效果。
內容介紹:
1、使用系統控制項,實現自定義的效果,案例有:
優酷環形選單、廣告條(viewpager)、下拉列表(spinner)
2、自己定義乙個類繼承view ,實現特定的效果,案例有:
自定義開關按鈕、水波紋效果
3、自定義屬性:給自己的控制項,新增自己的屬性,通過demo了解系統解析屬性的過程,並給上乙個例子開關按鈕,新增新屬性。
4、自己定義乙個類繼承viewgroup,實現相應的效果,案例有:
仿viewpager的效果實現 、 仿網易側滑選單
組合控制項.(把很多android原生的控制項組合起來, 達到某種效果叫組合效果.)**********優酷選單+viewpager
動畫的執行不會影響控制項的位置.
viewpager: 預載入, 預先載入左右兩邊的item. 左邊不可以載入-1索引, 右邊不可以載入viewpager的總長度.
預載入只會保留三個item物件.
自定義控制項.(完全自己實現乙個控制項. 繼承自view類和viewgroup類實現某種特殊的效果.)
android中view的繪製流程(從建立到顯示).
measure -> layout -> draw
測量寬和高 布局(排版) 繪製控制項
| | |
onmeasure onlayout ondraw
自定義開關:
1. onmeasure設定開關的寬度和高度: 背景的寬度和高度.
2. ondraw, 把背景和滑動塊畫在指定的位置.
getx 獲得的是相對於當前自己控制項的x軸的座標
getrowx 獲得當前手指按下在螢幕中的x軸的值.
自定義屬性:
1. 需要宣告自定義屬性.
在values下建立乙個檔案attrs.xml, 寫一下內容:
2. 在布局檔案中引用自定義的屬性.
1). 在根節點宣告命名空間.
xmlns:itheima="
"2). 在自定義控制項中引用自定義屬性.
itheima:switchbackgroundid="@drawable/switch_background"
itheima:slidebuttonbackgroundid="@drawable/slide_button_background"
itheima:togglestate="false"
3. 在自定義控制項中取出自定義屬性的值.
// 把屬性集合(attributeset)中的屬性和自定義屬性(toggleview)中相同的屬性取出來
typedarray typedarray = context.obtainstyledattributes(attrs, r.styleable.toggleview);
int indexcount = typedarray.getindexcount(); // 獲得當前屬性集合自定義屬性的數量
for (int i = 0; i < indexcount; i++) }
自定義組合控制項及自定義屬性
1 宣告乙個view物件繼承相對布局或線性布局或其他的viewgroup 2 在自定義的view物件裡面重寫它的構造方法,在構造方法裡面就把布局都初始化完畢 3 根據業務需求 新增一些api方法,擴充套件自定義的組合控制項 4 擴充套件自定義屬性 5 宣告自定義屬性的命名空間 xmlns andro...
Android自定義控制項 自定義屬性
自定義屬性的過程 1.在res values資料夾中建立attrs的xml檔案。2.寫入標籤,定義子標籤attr,放入自定義屬性的名稱。format 可以用 來同時使用 1 reference 參考某一資源id 2 color 顏色值 3 boolean 布林值 4 dimension 尺寸值 帶有...
自定義控制項7 自定義屬性二
問題1 format reference color 比如自定義乙個按鈕,背景有可能是顏色也有可能是,該如何去獲取該屬性?問題2 typedvalue是什麼鬼東西?問題3 getfraction index,base,pbase,defvalue 中的第2,3個引數是幹什麼的?我的解決方法 if a...