自定義View筆記 一

2021-08-09 14:07:49 字數 2114 閱讀 4473

注:該筆記是整理學習鴻洋大神自定義view系列部落格的部分知識點。

自定義view(自定義控制項)四大步驟:

1. 自定義view的屬性

2. 在view的構造方法中獲取自定義的屬性

3. 重寫onmesure() 不是選項

4. 重寫ondraw()

自定義view屬性

/**    在res/values下建立乙個attrs.xml檔案    */

name="titletext"

format="string" />

name="titletextsize"

format="dimension" />

name="titletextcolor"

format="color" />

name="image"

format="reference" />

name="imagescaletype">

name="fillxy"

value="0" />

name="center"

value="1" />

attr>

name="customimageview">

name="titletext" />

name="titletextsize" />

name="titletextcolor" />

name="image" />

name="imagescaletype" />

declare-styleable>

resources>

注:format的取值型別有:

string — 字串

color — 顏色值

demension — 尺寸值

integer — 整型值

float — 浮點值

reference — 參考某一資源id

boolean — 布林值

fraction — 百分數

enum — 列舉值

flag — 位或運算

獲取自定義的樣式屬性

public

customtitleview(context context, attributeset attrs, int defstyle)

} a.recycle(); //將typedarray**

/** * 獲得繪製文字的寬和高

*/

mpaint = new paint();

mpaint.settextsize(mtitletextsize);

// mpaint.setcolor(mtitletextcolor);

mbound = new rect();

mpaint.gettextbounds(mtitletext, 0, mtitletext.length(), mbound); //通過 gettextbound(string text,int start,int end,rect bounds) 或者 gettextbound(char text,int index,int count,rect bounds) 獲取繪製的大小

}

重寫onmeasure()

@override

protected

void

onmeasure(int widthmeasurespec, int heightmeasurespec)

else

} /**

* 設定高度

*/

specmode = measurespec.getmode(heightmeasurespec);

specsize = measurespec.getsize(heightmeasurespec);

if (specmode == measurespec.exactly)// match_parent , accurate

else

} setmeasureddimension(mwidth, mheight);

}

自定義View筆記

1.帶刪除按鈕的listview 將觸控事件交給手勢處理器處理 return gesturedetector.ontouchevent event override public boolean ondown motionevent e return false override public vo...

自定義View(一)

對於剛開始學自定義渣渣的我,對自定義還是挺恐慌的,不過上手後就好了。先總結下自定義view的步驟 1 自定義view的屬性 2 在view的構造方法中獲得我們自定義的屬性 3 繪製機制 重寫onmesure 按需求使用 重寫onsizechange 重寫onlayout 按需求使用 重寫ondraw...

自定義view(一)

1.什麼是自定義控制項?在android系統中,用系統的自帶控制項重新組合或者自定義類繼承view或者自定義繼承viewgroup,實現特定的ui效果。2.為什麼要學習自定義控制項?1 因為系統的某乙個控制項,在不同的裝置效果不一樣,為了達到效果一樣,就得用自定義控制項。2 為了整個軟體在不同裝置風...