自定義View的實現(xiàn)1

自帶的View滿足不了設(shè)計的要求,就需要自定義View控件螺句。1.首先要實現(xiàn)一個繼承自View的類煤痕。2.添加類的構(gòu)造方法梧宫,override父類的方法接谨,如onDraw,onMeasure等塘匣。3.如果自定義的View有自己的屬性脓豪,需要在values下建立attrs.xml文件,在其中定義屬性忌卤,同時代碼也要做修改扫夜。

構(gòu)造方法:

public MyView(Context context,AttributeSet attrs){

? ? ? ? ? ? ?super(context, attrs);

}

在xml文件(main.xml)中也需要進行如下操作:

<com.example.xhelloworld.NewView

? ? ? ?android:layout_width="wrap_content"

? ? ? ?android:layout_height="wrap_content"/>

至少在xml文件中寫上上面的內(nèi)容。其中com.example.xhelloworld.NewView 這句是需要顯示的控件所代表的類驰徊。com.example.xhelloworld是類的包名笤闯,NewView是類名。

完成上面的兩步之后就可以在代碼中實例化這個布局文件了棍厂。

自定義屬性設(shè)置(如果有自定義的屬性)

1.在values目錄下建立attrs.xml文件颗味,添加屬性內(nèi)容

2.在布局文件中添加新的命名空間xmlns,然后可以使用命名空間給自定義的空間設(shè)置屬性

3.設(shè)置完屬性之后牺弹,當(dāng)然還要對其進行處理浦马。在自定義View類中的構(gòu)造方法中進行處理

首先添加attrs.xml文件,在定義屬性

就是說张漂,我們這樣一個控件MyView晶默,需要2個自定義屬性textColor 和textSize

然后在布局文件中完成

何謂命名空間? xmlns = xml name space.?

對于自定義View我們要加一個命名空間航攒,不能以android:開頭磺陡,所以我們隨便命名一個,名字沒有特別的考究漠畜,本例中我們用my仅政。 格式如上面的代碼所示,注意后面的這個包名是“我們當(dāng)前應(yīng)用的包名”盆驹,而不是自定義View所在的包名圆丹。

我們可以看到,下面有兩條以android:開頭的屬性躯喇,說明這兩個屬性是android命名空間下的辫封。然后兩條以my:開頭的屬性,說明這是我們自定義屬性命名空間下的廉丽。命名空間就是這個作用倦微,定義了命名空間才能使用這個空間下的屬性。查看源文件就知道正压,其實諸如android命名空間下的組件的屬性欣福,比如LinearLayout的width,其實就是 <attr name =" width"焦履,format= "float"/>

最后在MyView.java中添加另一個構(gòu)造方法拓劝,并添加代碼來處理從xml中獲得的屬性

背后的事:View類的構(gòu)造方法:

·public view(Context context) ? ? ? ? ? ? ? ? ? ? ? ? ? ?//當(dāng)在代碼中創(chuàng)建對象時會被調(diào)用

·public?View?(Contextcontext,AttributeSetattrs) ? ? //這個方法是通過xml文件來創(chuàng)建一個view對象的時候調(diào)用雏逾。很顯然xml文件一般是布局文件,就是現(xiàn)實控件的時候調(diào)用郑临,而布局文件中免不了會有屬性的設(shè)置栖博,如android:layout_width等,對這些屬性的設(shè)置對應(yīng)的處理代碼也在這個方法中完成厢洞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仇让,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子躺翻,更是在濱河造成了極大的恐慌丧叽,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件公你,死亡現(xiàn)場離奇詭異踊淳,居然都是意外死亡,警方通過查閱死者的電腦和手機省店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門嚣崭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笨触,“玉大人懦傍,你說我怎么就攤上這事÷樱” “怎么了粗俱?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長虚吟。 經(jīng)常有香客問我寸认,道長,這世上最難降的妖魔是什么串慰? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任偏塞,我火速辦了婚禮,結(jié)果婚禮上邦鲫,老公的妹妹穿的比我還像新娘灸叼。我一直安慰自己,他們只是感情好庆捺,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布古今。 她就那樣靜靜地躺著,像睡著了一般滔以。 火紅的嫁衣襯著肌膚如雪捉腥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天你画,我揣著相機與錄音抵碟,去河邊找鬼桃漾。 笑死,一個胖子當(dāng)著我的面吹牛立磁,可吹牛的內(nèi)容都是我干的呈队。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼唱歧,長吁一口氣:“原來是場噩夢啊……” “哼宪摧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颅崩,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤几于,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沿后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沿彭,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年尖滚,在試婚紗的時候發(fā)現(xiàn)自己被綠了喉刘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡漆弄,死狀恐怖睦裳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撼唾,我是刑警寧澤廉邑,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站倒谷,受9級特大地震影響蛛蒙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渤愁,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一牵祟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抖格,春花似錦诺苹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至办桨,卻和暖如春筹淫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工损姜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饰剥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓摧阅,卻偏偏與公主長得像汰蓉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子棒卷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容