Android自定義控制項 二

2021-08-19 15:59:42 字數 1257 閱讀 5363

onmeasure(int widthmeasurespec, int heightmeasurespec):用於獲取和制定測量規則的。widthmeasurespec和heightmeasurespec是由mode+size兩部分組成的,它是由父布局和子view共同決定的。其中mode的值可以分為三類:

1.未指定(unspecified):0<<30;

2.確切的(exactly):1<<30;

3.至多的(at_most):2<<30;

繼承view之後翻看view的onmeasure方法可以發現如下**:

setmeasureddimension(getdefaultsize(getsuggestedminimumwidth(), widthmeasurespec),

getdefaultsize(getsuggestedminimumheight(), heightmeasurespec));

getsuggestedminimumwidth(),getsuggestedminimumheight()是用來獲取當前控制項背景的寬度和高度,getde****tsize()方法的原始碼如下:

public

static

intgetdefaultsize(int size, int measurespec)

return result;

}

onlayout(boolean changed, int left, int top, int right, int bottom):用於獲取和制定位於螢幕上的位置。搭載android系統的智慧型裝置都是以裝置的左上角頂點為圓點,結合這個設計就可以知道left的值為當前控制項的左側距離螢幕左邊緣的距離,top的值為當前控制項的頂側距離螢幕上邊緣的距離,right的值為當前控制項的右側距離螢幕左邊緣的距離,bottom的值為當前控制項的低側距離距離螢幕上邊緣的距離。

ondraw(canvas canvas):用於繪製控制項,android的api提供了大量的方法來方便使用者繪製控制項。

onsizechanged(int w, int h, int oldw, int oldh):當onmeasure方法呼叫完畢之後被呼叫,通常使用者獲取控制項的寬高

onfinishinflate():在從xml檔案填充控制項的最後階段被呼叫,此方法只在從xml檔案填充控制項的時候被呼叫。

上述方法都被呼叫的時候,他們的呼叫順序如下所示:

onfinishinfalte–>onmeasure–>onsizechanged–>onlayout–>ondraw

Android自定義控制項(二)

上篇文章通過繼承view定義了乙個圓形控制項,在介面上繪製乙個圓形,並且根據不同的測量模式設定了不同的大小 自定義控制項 一 但是我們定義的圓形在介面設計時半徑 顏色都已經固定了,本文主要總結如何像原生控制項一樣,通過在xml檔案中設定屬性來控制圓形的半徑以及顏色,並在圓形中心顯示一段文字 首先要定...

Android 自定義控制項

幹android也有一段的時間了,自定義這塊的東西覺得還是很有比較複習一下基礎的東西。自定義控制項和自定義元件基本上的使用都是在專案中基本的android控制項滿足不了需求的時候使用的。所以,如果要高出特別炫的特效,或者比較特殊的控制項排列方式,例如瀑布流,那麼就要好好學學自定義咯。首先,先簡單的介...

android自定義控制項

android自定義控制項 二 入門,繼承view 說說android 兩種為自定義元件新增屬性的使用方法和區別 自定義控制項的屬性 自定義控制項 今天花了3,4個小時看了自定義控制項,看 懂了,還沒有實踐,因為時間不夠,日後實踐。總結下 自定義控制項有3種方式 繼承已有控制項 繼承乙個容器控制項,...