最近學習發現自定義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...