做過的自定義 View

2022-05-05 15:06:11 字數 1528 閱讀 4436

音訊圖最終效果類似於音訊圖中的條狀圖

只是效果模擬,並不監聽真實的音訊

條的寬度相同,高度隨機;條的顏色是紅到黃的線性漸變

隨著時間的變化,條的高度發生變化

自定義屬性

條的寬度(預設 3dp)

條的顏色變化範圍(兩個顏色——預設紅色、橙色)

條之間的間距

整個 view 的背景顏色

變化的頻率,單位是毫秒

處理起始繪製的座標,並結合條間距計算 view 能顯示多少個條。計算方法:條的總數 = (view 的寬度 - 條間距 * 2) / (條的寬度 + 條間距)

隨機生成條的高度,高度的範圍:[1, 控制項的高度]

條的顏色在兩個顏色之間,隨時間呈線性梯度變化

定義自定義屬性(res/values/attrs.xml):

name="audiobarchart">

name="barwidth"

format="reference|dimension" />

name="barstartcolor"

format="reference|color" />

name="barendcolor"

format="reference|color" />

name="barspace"

format="reference|dimension" />

name="wholebgcolor"

format="reference|color" />

name="changefrenquency"

format="integer" />

declare-styleable>

獲取自定義屬性並指定預設值:

public

audiobarchart

(context context, attributeset attrs)

測量並初始化變數值:

@override

protected

void

onmeasure

(int widthmeasurespec, int heightmeasurespec)

繪製:

@override

protected

void

ondraw

(canvas canvas)

postinvalidatedelayed(mchangefrequency);

}

最終效果:

最終效果

Android自定義View 自定義元件

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

自定義view之自定義屬性

1.首先在res的values檔案下新建乙個名為attrs.xml檔案 在該xml檔案中編寫我們需要的屬性 declare styleable後面的name必須要與接下來要自定義的view名一致。attr 後面的name表示需要自定義的屬性,format表示這些屬性的型別 2.新建乙個類繼承text...

自定義view 二

自定義view的最重要的乙個部分是自定義它的外觀。根據你的程式的需求,通過ondraw方法實現繪製。在ondraw中,會傳遞給你乙個canvas。canvas封裝了繪製圖形的方法。還需要自定義乙個 paint去定義顏色樣式的填充 簡單來說 canvas定義你在螢幕上畫的圖形,而paint定義顏色,樣...