自定義控制項及自定義屬性

2021-07-10 06:49:14 字數 1623 閱讀 3089

自定義控制項在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...