安卓開發自定義view初體驗

2021-08-09 18:01:35 字數 1797 閱讀 8941

最近學習發現自定義view可以製作,可以製作很秀的自己專屬的控制項,具體的介紹我就不多說了,很多大牛部落格已經說得很清楚了。主要實現了兩個方法,我也是簡單講一下

1:protected synchronized void onmeasure(int widthmeasurespec, int heightmeasurespec)

對view進行測量,首先獲取他的模式,根據不同的模式進行進行不同的處理,進行測量獲取他們的寬高

2:protected synchronized void ondraw(canvas canvas)

在裡面畫出你的圖形的樣子,畫出屬於自己專屬的view的樣子

下面就是**部分也是很簡單的

首先在attrs.xml檔案裡編寫自定義屬性

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

name="roundprogress">

name="mwidth"

format="dimension">40attr>

name="mheight"

format="dimension">100attr>

name="textsize"

format="dimension">18attr>

declare-styleable>

name="myview">

name="radius_s"

format="dimension">

attr>

declare-styleable>

resources>

接下來就是**部分了

public

class

roundprogress

extends

progressbar

public

roundprogress(context context, attributeset attrs)

public

roundprogress(context context, attributeset attrs, int defstyleattr)

/*** 獲取自定義屬性

**@param attrs attrs

*/private

void

obtainstyledattrs(attributeset attrs)

@override

protected

synchronized

void

onmeasure(int widthmeasurespec, int heightmeasurespec)

if (heightmode != measurespec.exactly)

super.onmeasure(widthmeasurespec, heightmeasurespec);

}@override

protected

synchronized

void

ondraw(canvas canvas)

canvas.restore();

}private

intdp2sp(int dpval)

private

intsp2dp(int spval)

}

接下來就是效果圖

是不是很簡單,大家可以慢慢玩製作出更加複雜的更加炫酷的view。

開發自定義View

view元件就類似於乙個矩形空白區域,剛開始它裡面什麼都沒有,對於android應用的其他ui元件來說,他們都繼承了view元件,然後在view元件的空白區域上繪製外觀.基於這個原理,開發者可以開發出專案定製的元件,當android系統提供的ui不能滿足開發需求時,可以自定義類去繼承view類或者v...

安卓自定義view繪製尺寸

我們知道view在螢幕上顯示出來要先經過measure和layout.在呼叫onmeasure int widthspec,int heightspec 方法時,要涉及到measurespec的使用,measurespec有3種模式分別是unspecified,exactly和at most,那麼這...

安卓自定義View 座標系篇

由於移動裝置一般定義螢幕左上角為座標原點,向右為x軸增大方向,向下為y軸增大方向,所以在在手機螢幕上的座標系與數學中常見的座標繫在y軸的方向上是相反的。如下圖 下圖中的 是對應的 實際螢幕上的預設座標系如下 其中棕色部分為手機螢幕 注意 view的座標系是相對于父控制項而言的 gettop 獲取子v...