Android 自定義View教程(2)

2021-07-15 19:52:45 字數 1327 閱讀 2422

上節課我們學習如何畫乙個圓,今天我們來繼續自定義view之路。

今天講的列子是我今天給朋友講的乙個自定義view的列子,這節課我們將實現自適應的寬高。

首先來自定義我們的屬性:

<?xml version="1.0" encoding="utf-8"?>

下面來看我們的布局**:

<?xml version="1.0" encoding="utf-8"?>

linearlayout xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

下面是我們的關鍵自定義的view類:

首先看下我們的建構函式 public myview(context context)

public myview(context context, attributeset attrs) 

public myview(context context, attributeset attrs, int defstyleattr)

我們在布局寫的是wrap_content,所以我們今天要在onmeasure方法中來測量我們view的寬高。

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec) else

}/**

* 高度

*/int heigthmode = measurespec.getmode(heightmeasurespec);

int heightsize = measurespec.getsize(heightmeasurespec);

//這個模式是有指定具體的值,如:android:layout_width="match_parent" android:layout_width="200dp"

if(heigthmode == measurespec.exactly)else

}setmeasureddimension(width,height);

}

下面我們就可以通過ondraw方法畫出我們要的效果:

@override

protected void ondraw(canvas canvas)

我們執行看下效果:

Android自定義View 自定義元件

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

Android自定義View實現

android自定義view實現很簡單 繼承view或者其子類,重寫建構函式 ondraw,onmeasure 等函式,根據繼承的類的不同可能有所不同。如果自定義的view需要有自定義的屬性,需要在values下建立attrs.xml。在其中定義你的屬性。在使用到自定義view的xml布局檔案中需要...

Android 自定義View 一

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