Android自定義View 一 View的測量

2021-07-10 02:40:34 字數 1087 閱讀 4695

想要讓系統繪製出你所需要的圖形,就必須告訴系統view的大小,所以,在繪製view時,先實現view的onmesure()方法。

在測量view之前,要先了解measurespec這個類,measurespec物件中包含了測量的模式和測量的大小;

measurespec.exactly 精確模式:當我們將控制項的layout_width屬性或者layout_height屬性指定為具體值的時候,這時候使用的是

measurespec.exactly模式

measurespec.at_most 最大值模式,當我們將控制項的layout_width屬性或者layout_height屬性指定為wrap_content時,控制項的大小隨子控制項的大小變化而變化。

measurespec.unspecfied 不指定大小測量模式,view想多大就多大。

檢視原始碼可以知道,super.onmeasure()方法最終將測量所得到的值傳給了setmeasureddimension()供系統呼叫。

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

測量寬度:

/**

* 測量寬度

* @param widthmeasurespec

* @return

*/private int mesurewidth(int widthmeasurespec) else

}return ret;

}

測量高度:(與寬度幾乎一樣)

/**

* 測量高度

* @param heightmeasurespec

* @return

*/private int measureheight(int heightmeasurespec) else

}return ret;

}

注:如果不重寫onmeasure()方法,預設情況下,設定wrap_content時,控制項會填充父窗體。

Android 自定義View 一

android的ui介面都是由view和viewgroup及其派生類組合而成的。其中,view是所有ui元件的基類,而viewgroup是容納這些元件的容器,其本身也是從view派生出來的。androidui介面的一般結構可參見下面的示意圖 可見,作為容器的viewgroup可以包含作為葉子節點的v...

android 自定義view 一

android自定義控制項分為兩類,一類是繼承view,一類是繼承viewgroup。由於直接繼承viewgroup是在子view的基礎上進行測量和定位的。自定義view大體上可以分類三類 接下來分析如何做,我們先看整體 public class customerrunline extends vi...

Android自定義View 自定義元件

自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...